diff --git a/ckanext/ubdc/assets/css/style.css b/ckanext/ubdc/assets/css/style.css new file mode 100644 index 0000000..7e5e179 --- /dev/null +++ b/ckanext/ubdc/assets/css/style.css @@ -0,0 +1,11466 @@ +@charset "UTF-8"; +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,200,400,600,600,700"); +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +a { + background-color: transparent; +} + +a:active, +a:hover { + outline: 0; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +mark { + background: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 1em 40px; +} + +hr { + box-sizing: content-box; + height: 0; +} + +pre { + overflow: auto; +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} + +button { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input { + line-height: normal; +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0; +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto; +} + +input[type=search] { + -webkit-appearance: textfield; + box-sizing: content-box; +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + border: 0; + padding: 0; +} + +textarea { + overflow: auto; +} + +optgroup { + font-weight: bold; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + 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; + } +} +@font-face { + font-family: "Glyphicons Halflings"; + src: url("../vendor/bootstrap/fonts/glyphicons-halflings-regular.eot"); + src: url("../vendor/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../vendor/bootstrap/fonts/glyphicons-halflings-regular.woff") format("woff"), url("../vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../vendor/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: "Glyphicons Halflings"; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.glyphicon-asterisk:before { + content: "*"; +} + +.glyphicon-plus:before { + content: "+"; +} + +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "€"; +} + +.glyphicon-minus:before { + content: "−"; +} + +.glyphicon-cloud:before { + content: "☁"; +} + +.glyphicon-envelope:before { + content: "✉"; +} + +.glyphicon-pencil:before { + content: "✏"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-lock:before { + content: "\e033"; +} + +.glyphicon-flag:before { + content: "\e034"; +} + +.glyphicon-headphones:before { + content: "\e035"; +} + +.glyphicon-volume-off:before { + content: "\e036"; +} + +.glyphicon-volume-down:before { + content: "\e037"; +} + +.glyphicon-volume-up:before { + content: "\e038"; +} + +.glyphicon-qrcode:before { + content: "\e039"; +} + +.glyphicon-barcode:before { + content: "\e040"; +} + +.glyphicon-tag:before { + content: "\e041"; +} + +.glyphicon-tags:before { + content: "\e042"; +} + +.glyphicon-book:before { + content: "\e043"; +} + +.glyphicon-bookmark:before { + content: "\e044"; +} + +.glyphicon-print:before { + content: "\e045"; +} + +.glyphicon-camera:before { + content: "\e046"; +} + +.glyphicon-font:before { + content: "\e047"; +} + +.glyphicon-bold:before { + content: "\e048"; +} + +.glyphicon-italic:before { + content: "\e049"; +} + +.glyphicon-text-height:before { + content: "\e050"; +} + +.glyphicon-text-width:before { + content: "\e051"; +} + +.glyphicon-align-left:before { + content: "\e052"; +} + +.glyphicon-align-center:before { + content: "\e053"; +} + +.glyphicon-align-right:before { + content: "\e054"; +} + +.glyphicon-align-justify:before { + content: "\e055"; +} + +.glyphicon-list:before { + content: "\e056"; +} + +.glyphicon-indent-left:before { + content: "\e057"; +} + +.glyphicon-indent-right:before { + content: "\e058"; +} + +.glyphicon-facetime-video:before { + content: "\e059"; +} + +.glyphicon-picture:before { + content: "\e060"; +} + +.glyphicon-map-marker:before { + content: "\e062"; +} + +.glyphicon-adjust:before { + content: "\e063"; +} + +.glyphicon-tint:before { + content: "\e064"; +} + +.glyphicon-edit:before { + content: "\e065"; +} + +.glyphicon-share:before { + content: "\e066"; +} + +.glyphicon-check:before { + content: "\e067"; +} + +.glyphicon-move:before { + content: "\e068"; +} + +.glyphicon-step-backward:before { + content: "\e069"; +} + +.glyphicon-fast-backward:before { + content: "\e070"; +} + +.glyphicon-backward:before { + content: "\e071"; +} + +.glyphicon-play:before { + content: "\e072"; +} + +.glyphicon-pause:before { + content: "\e073"; +} + +.glyphicon-stop:before { + content: "\e074"; +} + +.glyphicon-forward:before { + content: "\e075"; +} + +.glyphicon-fast-forward:before { + content: "\e076"; +} + +.glyphicon-step-forward:before { + content: "\e077"; +} + +.glyphicon-eject:before { + content: "\e078"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-plus-sign:before { + content: "\e081"; +} + +.glyphicon-minus-sign:before { + content: "\e082"; +} + +.glyphicon-remove-sign:before { + content: "\e083"; +} + +.glyphicon-ok-sign:before { + content: "\e084"; +} + +.glyphicon-question-sign:before { + content: "\e085"; +} + +.glyphicon-info-sign:before { + content: "\e086"; +} + +.glyphicon-screenshot:before { + content: "\e087"; +} + +.glyphicon-remove-circle:before { + content: "\e088"; +} + +.glyphicon-ok-circle:before { + content: "\e089"; +} + +.glyphicon-ban-circle:before { + content: "\e090"; +} + +.glyphicon-arrow-left:before { + content: "\e091"; +} + +.glyphicon-arrow-right:before { + content: "\e092"; +} + +.glyphicon-arrow-up:before { + content: "\e093"; +} + +.glyphicon-arrow-down:before { + content: "\e094"; +} + +.glyphicon-share-alt:before { + content: "\e095"; +} + +.glyphicon-resize-full:before { + content: "\e096"; +} + +.glyphicon-resize-small:before { + content: "\e097"; +} + +.glyphicon-exclamation-sign:before { + content: "\e101"; +} + +.glyphicon-gift:before { + content: "\e102"; +} + +.glyphicon-leaf:before { + content: "\e103"; +} + +.glyphicon-fire:before { + content: "\e104"; +} + +.glyphicon-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.glyphicon-calendar:before { + content: "\e109"; +} + +.glyphicon-random:before { + content: "\e110"; +} + +.glyphicon-comment:before { + content: "\e111"; +} + +.glyphicon-magnet:before { + content: "\e112"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-retweet:before { + content: "\e115"; +} + +.glyphicon-shopping-cart:before { + content: "\e116"; +} + +.glyphicon-folder-close:before { + content: "\e117"; +} + +.glyphicon-folder-open:before { + content: "\e118"; +} + +.glyphicon-resize-vertical:before { + content: "\e119"; +} + +.glyphicon-resize-horizontal:before { + content: "\e120"; +} + +.glyphicon-hdd:before { + content: "\e121"; +} + +.glyphicon-bullhorn:before { + content: "\e122"; +} + +.glyphicon-bell:before { + content: "\e123"; +} + +.glyphicon-certificate:before { + content: "\e124"; +} + +.glyphicon-thumbs-up:before { + content: "\e125"; +} + +.glyphicon-thumbs-down:before { + content: "\e126"; +} + +.glyphicon-hand-right:before { + content: "\e127"; +} + +.glyphicon-hand-left:before { + content: "\e128"; +} + +.glyphicon-hand-up:before { + content: "\e129"; +} + +.glyphicon-hand-down:before { + content: "\e130"; +} + +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} + +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} + +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} + +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} + +.glyphicon-globe:before { + content: "\e135"; +} + +.glyphicon-wrench:before { + content: "\e136"; +} + +.glyphicon-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-briefcase:before { + content: "\e139"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-paperclip:before { + content: "\e142"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-pushpin:before { + content: "\e146"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.glyphicon-cd:before { + content: "\e201"; +} + +.glyphicon-save-file:before { + content: "\e202"; +} + +.glyphicon-open-file:before { + content: "\e203"; +} + +.glyphicon-level-up:before { + content: "\e204"; +} + +.glyphicon-copy:before { + content: "\e205"; +} + +.glyphicon-paste:before { + content: "\e206"; +} + +.glyphicon-alert:before { + content: "\e209"; +} + +.glyphicon-equalizer:before { + content: "\e210"; +} + +.glyphicon-king:before { + content: "\e211"; +} + +.glyphicon-queen:before { + content: "\e212"; +} + +.glyphicon-pawn:before { + content: "\e213"; +} + +.glyphicon-bishop:before { + content: "\e214"; +} + +.glyphicon-knight:before { + content: "\e215"; +} + +.glyphicon-baby-formula:before { + content: "\e216"; +} + +.glyphicon-tent:before { + content: "⛺"; +} + +.glyphicon-blackboard:before { + content: "\e218"; +} + +.glyphicon-bed:before { + content: "\e219"; +} + +.glyphicon-apple:before { + content: "\f8ff"; +} + +.glyphicon-erase:before { + content: "\e221"; +} + +.glyphicon-hourglass:before { + content: "⌛"; +} + +.glyphicon-lamp:before { + content: "\e223"; +} + +.glyphicon-duplicate:before { + content: "\e224"; +} + +.glyphicon-piggy-bank:before { + content: "\e225"; +} + +.glyphicon-scissors:before { + content: "\e226"; +} + +.glyphicon-bitcoin:before { + content: "\e227"; +} + +.glyphicon-btc:before { + content: "\e227"; +} + +.glyphicon-xbt:before { + content: "\e227"; +} + +.glyphicon-yen:before { + content: "¥"; +} + +.glyphicon-jpy:before { + content: "¥"; +} + +.glyphicon-ruble:before { + content: "₽"; +} + +.glyphicon-rub:before { + content: "₽"; +} + +.glyphicon-scale:before { + content: "\e230"; +} + +.glyphicon-ice-lolly:before { + content: "\e231"; +} + +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} + +.glyphicon-education:before { + content: "\e233"; +} + +.glyphicon-option-horizontal:before { + content: "\e234"; +} + +.glyphicon-option-vertical:before { + content: "\e235"; +} + +.glyphicon-menu-hamburger:before { + content: "\e236"; +} + +.glyphicon-modal-window:before { + content: "\e237"; +} + +.glyphicon-oil:before { + content: "\e238"; +} + +.glyphicon-grain:before { + content: "\e239"; +} + +.glyphicon-sunglasses:before { + content: "\e240"; +} + +.glyphicon-text-size:before { + content: "\e241"; +} + +.glyphicon-text-color:before { + content: "\e242"; +} + +.glyphicon-text-background:before { + content: "\e243"; +} + +.glyphicon-object-align-top:before { + content: "\e244"; +} + +.glyphicon-object-align-bottom:before { + content: "\e245"; +} + +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} + +.glyphicon-object-align-left:before { + content: "\e247"; +} + +.glyphicon-object-align-vertical:before { + content: "\e248"; +} + +.glyphicon-object-align-right:before { + content: "\e249"; +} + +.glyphicon-triangle-right:before { + content: "\e250"; +} + +.glyphicon-triangle-left:before { + content: "\e251"; +} + +.glyphicon-triangle-bottom:before { + content: "\e252"; +} + +.glyphicon-triangle-top:before { + content: "\e253"; +} + +.glyphicon-console:before { + content: "\e254"; +} + +.glyphicon-superscript:before { + content: "\e255"; +} + +.glyphicon-subscript:before { + content: "\e256"; +} + +.glyphicon-menu-left:before { + content: "\e257"; +} + +.glyphicon-menu-right:before { + content: "\e258"; +} + +.glyphicon-menu-down:before { + content: "\e259"; +} + +.glyphicon-menu-up:before { + content: "\e260"; +} + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: "Open Sans", sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #fff; +} + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +a { + color: #F37021; + text-decoration: none; +} +a:hover, a:focus { + color: #bd4e0a; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +figure { + margin: 0; +} + +img { + vertical-align: middle; +} + +.img-responsive { + display: block; + max-width: 100%; + height: auto; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + padding: 4px; + line-height: 1.428571429; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +[role=button] { + cursor: pointer; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + font-family: inherit; + font-weight: 700; + line-height: 1.1; + color: inherit; +} +h1 small, +h1 .small, h2 small, +h2 .small, h3 small, +h3 .small, h4 small, +h4 .small, h5 small, +h5 .small, h6 small, +h6 .small, +.h1 small, +.h1 .small, .h2 small, +.h2 .small, .h3 small, +.h3 .small, .h4 small, +.h4 .small, .h5 small, +.h5 .small, .h6 small, +.h6 .small { + font-weight: 400; + line-height: 1; + color: #777777; +} + +h1, .h1, +h2, .h2, +h3, .h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +h1 .small, .h1 small, +.h1 .small, +h2 small, +h2 .small, .h2 small, +.h2 .small, +h3 small, +h3 .small, .h3 small, +.h3 .small { + font-size: 65%; +} + +h4, .h4, +h5, .h5, +h6, .h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +h4 .small, .h4 small, +.h4 .small, +h5 small, +h5 .small, .h5 small, +.h5 .small, +h6 small, +h6 .small, .h6 small, +.h6 .small { + font-size: 75%; +} + +h1, .h1 { + font-size: 36px; +} + +h2, .h2 { + font-size: 30px; +} + +h3, .h3 { + font-size: 24px; +} + +h4, .h4 { + font-size: 18px; +} + +h5, .h5 { + font-size: 14px; +} + +h6, .h6 { + font-size: 12px; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + +small, +.small { + font-size: 85%; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +.text-justify { + text-align: justify; +} + +.text-nowrap { + white-space: nowrap; +} + +.text-lowercase { + text-transform: lowercase; +} + +.text-uppercase, .initialism { + text-transform: uppercase; +} + +.text-capitalize { + text-transform: capitalize; +} + +.text-muted { + color: #555555; +} + +.text-primary { + color: #F37021; +} + +a.text-primary:hover, +a.text-primary:focus { + color: #d5580c; +} + +.text-success { + color: #3c763d; +} + +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} + +.text-info { + color: #31708f; +} + +a.text-info:hover, +a.text-info:focus { + color: #245269; +} + +.text-warning { + color: #8a6d3b; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} + +.text-danger { + color: #a94442; +} + +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} + +.bg-primary { + color: #fff; +} + +.bg-primary { + background-color: #F37021; +} + +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #d5580c; +} + +.bg-success { + background-color: #dff0d8; +} + +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} + +.bg-info { + background-color: #d9edf7; +} + +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} + +.bg-warning { + background-color: #fcf8e3; +} + +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} + +.bg-danger { + background-color: #f2dede; +} + +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ul ol, +ol ul, +ol ol { + margin-bottom: 0; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-top: 0; + margin-bottom: 20px; +} + +dt, +dd { + line-height: 1.428571429; +} + +dt { + font-weight: 700; +} + +dd { + margin-left: 0; +} + +.dl-horizontal dd:before, .dl-horizontal dd:after { + display: table; + content: " "; +} +.dl-horizontal dd:after { + clear: both; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} + +abbr[title], +abbr[data-original-title] { + cursor: help; +} + +.initialism { + font-size: 90%; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.428571429; + color: #777777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: "— "; +} + +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eeeeee; + border-left: 0; +} +.blockquote-reverse footer:before, +.blockquote-reverse small:before, +.blockquote-reverse .small:before, +blockquote.pull-right footer:before, +blockquote.pull-right small:before, +blockquote.pull-right .small:before { + content: ""; +} +.blockquote-reverse footer:after, +.blockquote-reverse small:after, +.blockquote-reverse .small:after, +blockquote.pull-right footer:after, +blockquote.pull-right small:after, +blockquote.pull-right .small:after { + content: " —"; +} + +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} + +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; + box-shadow: none; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.container:before, .container:after { + display: table; + content: " "; +} +.container:after { + clear: both; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1290px; + } +} + +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.container-fluid:before, .container-fluid:after { + display: table; + content: " "; +} +.container-fluid:after { + clear: both; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} +.row:before, .row:after { + display: table; + content: " "; +} +.row:after { + clear: both; +} + +.row-no-gutters { + margin-right: 0; + margin-left: 0; +} +.row-no-gutters [class*=col-] { + padding-right: 0; + padding-left: 0; +} + +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} + +.col-xs-1 { + width: 8.3333333333%; +} + +.col-xs-2 { + width: 16.6666666667%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-4 { + width: 33.3333333333%; +} + +.col-xs-5 { + width: 41.6666666667%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-7 { + width: 58.3333333333%; +} + +.col-xs-8 { + width: 66.6666666667%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-10 { + width: 83.3333333333%; +} + +.col-xs-11 { + width: 91.6666666667%; +} + +.col-xs-12 { + width: 100%; +} + +.col-xs-pull-0 { + right: auto; +} + +.col-xs-pull-1 { + right: 8.3333333333%; +} + +.col-xs-pull-2 { + right: 16.6666666667%; +} + +.col-xs-pull-3 { + right: 25%; +} + +.col-xs-pull-4 { + right: 33.3333333333%; +} + +.col-xs-pull-5 { + right: 41.6666666667%; +} + +.col-xs-pull-6 { + right: 50%; +} + +.col-xs-pull-7 { + right: 58.3333333333%; +} + +.col-xs-pull-8 { + right: 66.6666666667%; +} + +.col-xs-pull-9 { + right: 75%; +} + +.col-xs-pull-10 { + right: 83.3333333333%; +} + +.col-xs-pull-11 { + right: 91.6666666667%; +} + +.col-xs-pull-12 { + right: 100%; +} + +.col-xs-push-0 { + left: auto; +} + +.col-xs-push-1 { + left: 8.3333333333%; +} + +.col-xs-push-2 { + left: 16.6666666667%; +} + +.col-xs-push-3 { + left: 25%; +} + +.col-xs-push-4 { + left: 33.3333333333%; +} + +.col-xs-push-5 { + left: 41.6666666667%; +} + +.col-xs-push-6 { + left: 50%; +} + +.col-xs-push-7 { + left: 58.3333333333%; +} + +.col-xs-push-8 { + left: 66.6666666667%; +} + +.col-xs-push-9 { + left: 75%; +} + +.col-xs-push-10 { + left: 83.3333333333%; +} + +.col-xs-push-11 { + left: 91.6666666667%; +} + +.col-xs-push-12 { + left: 100%; +} + +.col-xs-offset-0 { + margin-left: 0%; +} + +.col-xs-offset-1 { + margin-left: 8.3333333333%; +} + +.col-xs-offset-2 { + margin-left: 16.6666666667%; +} + +.col-xs-offset-3 { + margin-left: 25%; +} + +.col-xs-offset-4 { + margin-left: 33.3333333333%; +} + +.col-xs-offset-5 { + margin-left: 41.6666666667%; +} + +.col-xs-offset-6 { + margin-left: 50%; +} + +.col-xs-offset-7 { + margin-left: 58.3333333333%; +} + +.col-xs-offset-8 { + margin-left: 66.6666666667%; +} + +.col-xs-offset-9 { + margin-left: 75%; +} + +.col-xs-offset-10 { + margin-left: 83.3333333333%; +} + +.col-xs-offset-11 { + margin-left: 91.6666666667%; +} + +.col-xs-offset-12 { + margin-left: 100%; +} + +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-1 { + width: 8.3333333333%; + } + .col-sm-2 { + width: 16.6666666667%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.3333333333%; + } + .col-sm-5 { + width: 41.6666666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.3333333333%; + } + .col-sm-8 { + width: 66.6666666667%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.3333333333%; + } + .col-sm-11 { + width: 91.6666666667%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-pull-1 { + right: 8.3333333333%; + } + .col-sm-pull-2 { + right: 16.6666666667%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.3333333333%; + } + .col-sm-pull-5 { + right: 41.6666666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.3333333333%; + } + .col-sm-pull-8 { + right: 66.6666666667%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.3333333333%; + } + .col-sm-pull-11 { + right: 91.6666666667%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-push-1 { + left: 8.3333333333%; + } + .col-sm-push-2 { + left: 16.6666666667%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.3333333333%; + } + .col-sm-push-5 { + left: 41.6666666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.3333333333%; + } + .col-sm-push-8 { + left: 66.6666666667%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.3333333333%; + } + .col-sm-push-11 { + left: 91.6666666667%; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-offset-0 { + margin-left: 0%; + } + .col-sm-offset-1 { + margin-left: 8.3333333333%; + } + .col-sm-offset-2 { + margin-left: 16.6666666667%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.3333333333%; + } + .col-sm-offset-5 { + margin-left: 41.6666666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.3333333333%; + } + .col-sm-offset-8 { + margin-left: 66.6666666667%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.3333333333%; + } + .col-sm-offset-11 { + margin-left: 91.6666666667%; + } + .col-sm-offset-12 { + margin-left: 100%; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-1 { + width: 8.3333333333%; + } + .col-md-2 { + width: 16.6666666667%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.3333333333%; + } + .col-md-5 { + width: 41.6666666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.3333333333%; + } + .col-md-8 { + width: 66.6666666667%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.3333333333%; + } + .col-md-11 { + width: 91.6666666667%; + } + .col-md-12 { + width: 100%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.3333333333%; + } + .col-md-pull-2 { + right: 16.6666666667%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.3333333333%; + } + .col-md-pull-5 { + right: 41.6666666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.3333333333%; + } + .col-md-pull-8 { + right: 66.6666666667%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.3333333333%; + } + .col-md-pull-11 { + right: 91.6666666667%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.3333333333%; + } + .col-md-push-2 { + left: 16.6666666667%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.3333333333%; + } + .col-md-push-5 { + left: 41.6666666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.3333333333%; + } + .col-md-push-8 { + left: 66.6666666667%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.3333333333%; + } + .col-md-push-11 { + left: 91.6666666667%; + } + .col-md-push-12 { + left: 100%; + } + .col-md-offset-0 { + margin-left: 0%; + } + .col-md-offset-1 { + margin-left: 8.3333333333%; + } + .col-md-offset-2 { + margin-left: 16.6666666667%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.3333333333%; + } + .col-md-offset-5 { + margin-left: 41.6666666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.3333333333%; + } + .col-md-offset-8 { + margin-left: 66.6666666667%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.3333333333%; + } + .col-md-offset-11 { + margin-left: 91.6666666667%; + } + .col-md-offset-12 { + margin-left: 100%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-1 { + width: 8.3333333333%; + } + .col-lg-2 { + width: 16.6666666667%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.3333333333%; + } + .col-lg-5 { + width: 41.6666666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.3333333333%; + } + .col-lg-8 { + width: 66.6666666667%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.3333333333%; + } + .col-lg-11 { + width: 91.6666666667%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.3333333333%; + } + .col-lg-pull-2 { + right: 16.6666666667%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.3333333333%; + } + .col-lg-pull-5 { + right: 41.6666666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.3333333333%; + } + .col-lg-pull-8 { + right: 66.6666666667%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.3333333333%; + } + .col-lg-pull-11 { + right: 91.6666666667%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.3333333333%; + } + .col-lg-push-2 { + left: 16.6666666667%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.3333333333%; + } + .col-lg-push-5 { + left: 41.6666666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.3333333333%; + } + .col-lg-push-8 { + left: 66.6666666667%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.3333333333%; + } + .col-lg-push-11 { + left: 91.6666666667%; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-offset-0 { + margin-left: 0%; + } + .col-lg-offset-1 { + margin-left: 8.3333333333%; + } + .col-lg-offset-2 { + margin-left: 16.6666666667%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.3333333333%; + } + .col-lg-offset-5 { + margin-left: 41.6666666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.3333333333%; + } + .col-lg-offset-8 { + margin-left: 66.6666666667%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.3333333333%; + } + .col-lg-offset-11 { + margin-left: 91.6666666667%; + } + .col-lg-offset-12 { + margin-left: 100%; + } +} +table { + background-color: transparent; +} +table col[class*=col-] { + position: static; + display: table-column; + float: none; +} +table td[class*=col-], +table th[class*=col-] { + position: static; + display: table-cell; + float: none; +} + +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #555555; + text-align: left; +} + +th { + text-align: left; +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > thead > tr > td, +.table > tbody > tr > th, +.table > tbody > tr > td, +.table > tfoot > tr > th, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > th, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} + +.table-condensed > thead > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > th, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > th, +.table-condensed > tfoot > tr > td { + padding: 5px; +} + +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > th, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > th, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} + +.table > thead > tr > td.active, +.table > thead > tr > th.active, .table > thead > tr.active > td, .table > thead > tr.active > th, +.table > tbody > tr > td.active, +.table > tbody > tr > th.active, +.table > tbody > tr.active > td, +.table > tbody > tr.active > th, +.table > tfoot > tr > td.active, +.table > tfoot > tr > th.active, +.table > tfoot > tr.active > td, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} + +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} + +.table > thead > tr > td.success, +.table > thead > tr > th.success, .table > thead > tr.success > td, .table > thead > tr.success > th, +.table > tbody > tr > td.success, +.table > tbody > tr > th.success, +.table > tbody > tr.success > td, +.table > tbody > tr.success > th, +.table > tfoot > tr > td.success, +.table > tfoot > tr > th.success, +.table > tfoot > tr.success > td, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} + +.table > thead > tr > td.info, +.table > thead > tr > th.info, .table > thead > tr.info > td, .table > thead > tr.info > th, +.table > tbody > tr > td.info, +.table > tbody > tr > th.info, +.table > tbody > tr.info > td, +.table > tbody > tr.info > th, +.table > tfoot > tr > td.info, +.table > tfoot > tr > th.info, +.table > tfoot > tr.info > td, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} + +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} + +.table > thead > tr > td.warning, +.table > thead > tr > th.warning, .table > thead > tr.warning > td, .table > thead > tr.warning > th, +.table > tbody > tr > td.warning, +.table > tbody > tr > th.warning, +.table > tbody > tr.warning > td, +.table > tbody > tr.warning > th, +.table > tfoot > tr > td.warning, +.table > tfoot > tr > th.warning, +.table > tfoot > tr.warning > td, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} + +.table > thead > tr > td.danger, +.table > thead > tr > th.danger, .table > thead > tr.danger > td, .table > thead > tr.danger > th, +.table > tbody > tr > td.danger, +.table > tbody > tr > th.danger, +.table > tbody > tr.danger > td, +.table > tbody > tr.danger > th, +.table > tfoot > tr > td.danger, +.table > tfoot > tr > th.danger, +.table > tfoot > tr.danger > td, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} + +.table-responsive { + min-height: 0.01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: 700; +} + +input[type=search] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + appearance: none; +} + +input[type=radio], +input[type=checkbox] { + margin: 4px 0 0; + margin-top: 1px \9 ; + line-height: normal; +} +input[type=radio][disabled], input[type=radio].disabled, fieldset[disabled] input[type=radio], +input[type=checkbox][disabled], +input[type=checkbox].disabled, +fieldset[disabled] input[type=checkbox] { + cursor: not-allowed; +} + +input[type=file] { + display: block; +} + +input[type=range] { + display: block; + width: 100%; +} + +select[multiple], +select[size] { + height: auto; +} + +input[type=file]:focus, +input[type=radio]:focus, +input[type=checkbox]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { + background-color: #eeeeee; + opacity: 1; +} +.form-control[disabled], fieldset[disabled] .form-control { + cursor: not-allowed; +} + +textarea.form-control { + height: auto; +} + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type=date].form-control, + input[type=time].form-control, + input[type=datetime-local].form-control, + input[type=month].form-control { + line-height: 34px; + } + input[type=date].input-sm, + .input-group-sm > .input-group-btn > input[type=date].btn, .input-group-sm input[type=date], + input[type=time].input-sm, + .input-group-sm > .input-group-btn > input[type=time].btn, + .input-group-sm input[type=time], + input[type=datetime-local].input-sm, + .input-group-sm > .input-group-btn > input[type=datetime-local].btn, + .input-group-sm input[type=datetime-local], + input[type=month].input-sm, + .input-group-sm > .input-group-btn > input[type=month].btn, + .input-group-sm input[type=month] { + line-height: 30px; + } + input[type=date].input-lg, .control-large input[type=date], + .input-group-lg > .input-group-btn > input[type=date].btn, .input-group-lg input[type=date], + input[type=time].input-lg, + .control-large input[type=time], + .input-group-lg > .input-group-btn > input[type=time].btn, + .input-group-lg input[type=time], + input[type=datetime-local].input-lg, + .control-large input[type=datetime-local], + .input-group-lg > .input-group-btn > input[type=datetime-local].btn, + .input-group-lg input[type=datetime-local], + input[type=month].input-lg, + .control-large input[type=month], + .input-group-lg > .input-group-btn > input[type=month].btn, + .input-group-lg input[type=month] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 30px; +} + +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio.disabled label, fieldset[disabled] .radio label, +.checkbox.disabled label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + cursor: pointer; +} + +.radio input[type=radio], +.radio-inline input[type=radio], +.checkbox input[type=checkbox], +.checkbox-inline input[type=checkbox] { + position: absolute; + margin-top: 4px \9 ; + margin-left: -20px; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} + +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + vertical-align: middle; + cursor: pointer; +} +.radio-inline.disabled, fieldset[disabled] .radio-inline, +.checkbox-inline.disabled, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} + +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, .control-large input.form-control-static, .input-group-lg > .form-control-static.form-control, +.input-group-lg > .form-control-static.input-group-addon, +.input-group-lg > .input-group-btn > .form-control-static.btn, .form-control-static.input-sm, .input-group-sm > .form-control-static.form-control, +.input-group-sm > .form-control-static.input-group-addon, +.input-group-sm > .input-group-btn > .form-control-static.btn { + padding-right: 0; + padding-left: 0; +} + +.input-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm, .input-group-sm > select.form-control, +.input-group-sm > select.input-group-addon, +.input-group-sm > .input-group-btn > select.btn { + height: 30px; + line-height: 30px; +} + +textarea.input-sm, .input-group-sm > textarea.form-control, +.input-group-sm > textarea.input-group-addon, +.input-group-sm > .input-group-btn > textarea.btn, +select[multiple].input-sm, +.input-group-sm > select[multiple].form-control, +.input-group-sm > select[multiple].input-group-addon, +.input-group-sm > .input-group-btn > select[multiple].btn { + height: auto; +} + +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} + +.input-lg, .control-large input, .input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} + +select.input-lg, .input-group-lg > select.form-control, +.input-group-lg > select.input-group-addon, +.input-group-lg > .input-group-btn > select.btn { + height: 46px; + line-height: 46px; +} + +textarea.input-lg, .input-group-lg > textarea.form-control, +.input-group-lg > textarea.input-group-addon, +.input-group-lg > .input-group-btn > textarea.btn, +select[multiple].input-lg, +.input-group-lg > select[multiple].form-control, +.input-group-lg > select[multiple].input-group-addon, +.input-group-lg > .input-group-btn > select[multiple].btn { + height: auto; +} + +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} + +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} + +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} + +.input-lg + .form-control-feedback, .control-large input + .form-control-feedback, .input-group-lg > .form-control + .form-control-feedback, +.input-group-lg > .input-group-addon + .form-control-feedback, +.input-group-lg > .input-group-btn > .btn + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} + +.input-sm + .form-control-feedback, .input-group-sm > .form-control + .form-control-feedback, +.input-group-sm > .input-group-addon + .form-control-feedback, +.input-group-sm > .input-group-btn > .btn + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} + +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} + +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} + +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} + +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} + +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type=radio], + .form-inline .checkbox input[type=checkbox] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} + +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +.form-horizontal .form-group:before, .form-horizontal .form-group:after { + display: table; + content: " "; +} +.form-horizontal .form-group:after { + clear: both; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} + +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, .btn:focus, .btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, .btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, .btn[disabled], fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + opacity: 0.65; + -webkit-box-shadow: none; + box-shadow: none; +} + +a.btn.disabled, fieldset[disabled] a.btn { + pointer-events: none; +} + +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, .btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, .btn-default.active, .open > .btn-default.dropdown-toggle { + color: #333; + background-color: #e6e6e6; + background-image: none; + border-color: #adadad; +} +.btn-default:active:hover, .btn-default:active:focus, .btn-default:active.focus, .btn-default.active:hover, .btn-default.active:focus, .btn-default.active.focus, .open > .btn-default.dropdown-toggle:hover, .open > .btn-default.dropdown-toggle:focus, .open > .btn-default.dropdown-toggle.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default.disabled:hover, .btn-default.disabled:focus, .btn-default.disabled.focus, .btn-default[disabled]:hover, .btn-default[disabled]:focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default:hover, fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-primary { + color: #fff; + background-color: #F37021; + border-color: #ee610d; +} +.btn-primary:focus, .btn-primary.focus { + color: #fff; + background-color: #d5580c; + border-color: #753006; +} +.btn-primary:hover { + color: #fff; + background-color: #d5580c; + border-color: #b44a0a; +} +.btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #d5580c; + background-image: none; + border-color: #b44a0a; +} +.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus, .open > .btn-primary.dropdown-toggle:hover, .open > .btn-primary.dropdown-toggle:focus, .open > .btn-primary.dropdown-toggle.focus { + color: #fff; + background-color: #b44a0a; + border-color: #753006; +} +.btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary.focus { + background-color: #F37021; + border-color: #ee610d; +} +.btn-primary .badge { + color: #F37021; + background-color: #fff; +} + +.btn-success { + color: #fff; + background-color: #3A833A; + border-color: #327132; +} +.btn-success:focus, .btn-success.focus { + color: #fff; + background-color: #2a602a; + border-color: #0b190b; +} +.btn-success:hover { + color: #fff; + background-color: #2a602a; + border-color: #1f471f; +} +.btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { + color: #fff; + background-color: #2a602a; + background-image: none; + border-color: #1f471f; +} +.btn-success:active:hover, .btn-success:active:focus, .btn-success:active.focus, .btn-success.active:hover, .btn-success.active:focus, .btn-success.active.focus, .open > .btn-success.dropdown-toggle:hover, .open > .btn-success.dropdown-toggle:focus, .open > .btn-success.dropdown-toggle.focus { + color: #fff; + background-color: #1f471f; + border-color: #0b190b; +} +.btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled].focus, fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success.focus { + background-color: #3A833A; + border-color: #327132; +} +.btn-success .badge { + color: #3A833A; + background-color: #fff; +} + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, .btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { + color: #fff; + background-color: #31b0d5; + background-image: none; + border-color: #269abc; +} +.btn-info:active:hover, .btn-info:active:focus, .btn-info:active.focus, .btn-info.active:hover, .btn-info.active:focus, .btn-info.active.focus, .open > .btn-info.dropdown-toggle:hover, .open > .btn-info.dropdown-toggle:focus, .open > .btn-info.dropdown-toggle.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled].focus, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, .btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #ec971f; + background-image: none; + border-color: #d58512; +} +.btn-warning:active:hover, .btn-warning:active:focus, .btn-warning:active.focus, .btn-warning.active:hover, .btn-warning.active:focus, .btn-warning.active.focus, .open > .btn-warning.dropdown-toggle:hover, .open > .btn-warning.dropdown-toggle:focus, .open > .btn-warning.dropdown-toggle.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled].focus, fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} + +.btn-danger, .control-custom.disabled .checkbox.btn { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, .control-custom.disabled .checkbox.btn:focus, .btn-danger.focus, .control-custom.disabled .focus.checkbox.btn { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover, .control-custom.disabled .checkbox.btn:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, .control-custom.disabled .checkbox.btn:active, .btn-danger.active, .control-custom.disabled .active.checkbox.btn, .open > .btn-danger.dropdown-toggle, .control-custom.disabled .open > .dropdown-toggle.checkbox.btn { + color: #fff; + background-color: #c9302c; + background-image: none; + border-color: #ac2925; +} +.btn-danger:active:hover, .control-custom.disabled .checkbox.btn:active:hover, .btn-danger:active:focus, .control-custom.disabled .checkbox.btn:active:focus, .btn-danger:active.focus, .control-custom.disabled .checkbox.btn:active.focus, .btn-danger.active:hover, .control-custom.disabled .active.checkbox.btn:hover, .btn-danger.active:focus, .control-custom.disabled .active.checkbox.btn:focus, .btn-danger.active.focus, .control-custom.disabled .active.focus.checkbox.btn, .open > .btn-danger.dropdown-toggle:hover, .control-custom.disabled .open > .dropdown-toggle.checkbox.btn:hover, .open > .btn-danger.dropdown-toggle:focus, .control-custom.disabled .open > .dropdown-toggle.checkbox.btn:focus, .open > .btn-danger.dropdown-toggle.focus, .control-custom.disabled .open > .dropdown-toggle.focus.checkbox.btn { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger.disabled:hover, .control-custom.disabled .disabled.checkbox.btn:hover, .btn-danger.disabled:focus, .control-custom.disabled .disabled.checkbox.btn:focus, .btn-danger.disabled.focus, .control-custom.disabled .disabled.focus.checkbox.btn, .btn-danger[disabled]:hover, .control-custom.disabled [disabled].checkbox.btn:hover, .btn-danger[disabled]:focus, .control-custom.disabled [disabled].checkbox.btn:focus, .btn-danger[disabled].focus, .control-custom.disabled [disabled].focus.checkbox.btn, fieldset[disabled] .btn-danger:hover, fieldset[disabled] .control-custom.disabled .checkbox.btn:hover, .control-custom.disabled fieldset[disabled] .checkbox.btn:hover, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .control-custom.disabled .checkbox.btn:focus, .control-custom.disabled fieldset[disabled] .checkbox.btn:focus, fieldset[disabled] .btn-danger.focus, fieldset[disabled] .control-custom.disabled .focus.checkbox.btn, .control-custom.disabled fieldset[disabled] .focus.checkbox.btn { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge, .control-custom.disabled .checkbox.btn .badge { + color: #d9534f; + background-color: #fff; +} + +.btn-link { + font-weight: 400; + color: #F37021; + border-radius: 0; +} +.btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { + border-color: transparent; +} +.btn-link:hover, .btn-link:focus { + color: #bd4e0a; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus { + color: #777777; + text-decoration: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-xs, .btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type=submit].btn-block, +input[type=reset].btn-block, +input[type=button].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} +.collapse.in { + display: block; +} + +tr.collapse.in { + display: table-row; +} + +tbody.collapse.in { + display: table-row-group; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9 ; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} + +.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #F37021; + outline: 0; +} + +.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { + color: #777777; +} +.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} + +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #777777; + white-space: nowrap; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9 ; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} + +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar:before, .btn-toolbar:after { + display: table; + content: " "; +} +.btn-toolbar:after { + clear: both; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} + +.btn-group > .btn-lg + .dropdown-toggle, .btn-group-lg.btn-group > .btn + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn .caret { + margin-left: 0; +} + +.btn-lg .caret, .btn-group-lg > .btn .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} + +.dropup .btn-lg .caret, .dropup .btn-group-lg > .btn .caret { + border-width: 0 5px 5px; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} +.btn-group-vertical > .btn-group:after { + clear: both; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} + +[data-toggle=buttons] > .btn input[type=radio], +[data-toggle=buttons] > .btn input[type=checkbox], +[data-toggle=buttons] > .btn-group > .btn input[type=radio], +[data-toggle=buttons] > .btn-group > .btn input[type=checkbox] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*=col-] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: 400; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .input-group-addon.btn { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg, .control-large input.input-group-addon, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .input-group-addon.btn { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type=radio], +.input-group-addon input[type=checkbox] { + margin-top: 0; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav:before, .nav:after { + display: table; + content: " "; +} +.nav:after { + clear: both; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, .nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.nav > li.disabled > a { + color: #777777; +} +.nav > li.disabled > a:hover, .nav > li.disabled > a:focus { + color: #777777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, .nav .open > a:hover, .nav .open > a:focus { + background-color: #eeeeee; + border-color: #F37021; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #ddd; +} +.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { + color: #555555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { + color: #fff; + background-color: #F37021; +} + +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} + +.nav-justified, .nav-tabs.nav-justified { + width: 100%; +} +.nav-justified > li, .nav-tabs.nav-justified > li { + float: none; +} +.nav-justified > li > a, .nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li, .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a, .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} + +.nav-tabs-justified, .nav-tabs.nav-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +.navbar:before, .navbar:after { + display: table; + content: " "; +} +.navbar:after { + clear: both; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} + +.navbar-header:before, .navbar-header:after { + display: table; + content: " "; +} +.navbar-header:after { + clear: both; +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse:before, .navbar-collapse:after { + display: table; + content: " "; +} +.navbar-collapse:after { + clear: both; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} + +.container > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-header, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-header, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} + +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-right: 15px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} + +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} + +.navbar-form { + padding: 10px 15px; + margin-right: -15px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type=radio], + .navbar-form .checkbox input[type=checkbox] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm, .btn-group-sm > .navbar-btn.btn { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs, .btn-group-xs > .navbar-btn.btn { + margin-top: 14px; + margin-bottom: 14px; +} + +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} + +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, .navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:hover, fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} + +.navbar-inverse { + background-color: #222; + border-color: #090909; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #090909; +} +.navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #090909; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #090909; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #090909; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #090909; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .navbar-inverse .btn-link:hover, fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/ "; +} +.breadcrumb > .active { + color: #777777; +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.428571429; + color: #F37021; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li > a:hover, .pagination > li > a:focus, +.pagination > li > span:hover, +.pagination > li > span:focus { + z-index: 2; + color: #bd4e0a; + background-color: #eeeeee; + border-color: #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, +.pagination > .active > span, +.pagination > .active > span:hover, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #F37021; + border-color: #F37021; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager:before, .pager:after { + display: table; + content: " "; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777777; + cursor: not-allowed; + background-color: #fff; +} + +.label { + display: inline; + padding: 0.2em 0.6em 0.3em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25em; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} + +a.label:hover, a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} + +.label-default { + background-color: #777777; +} +.label-default[href]:hover, .label-default[href]:focus { + background-color: #5e5e5e; +} + +.label-primary { + background-color: #F37021; +} +.label-primary[href]:hover, .label-primary[href]:focus { + background-color: #d5580c; +} + +.label-success { + background-color: #3A833A; +} +.label-success[href]:hover, .label-success[href]:focus { + background-color: #2a602a; +} + +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, .label-info[href]:focus { + background-color: #31b0d5; +} + +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, .label-warning[href]:focus { + background-color: #ec971f; +} + +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, .label-danger[href]:focus { + background-color: #c9302c; +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #6E6E6E; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, .btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +.list-group-item.active > .badge, .nav-pills > .active > a > .badge { + color: #F37021; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} + +a.badge:hover, a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} + +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, .container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} + +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.428571429; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + display: block; + max-width: 100%; + height: auto; + margin-right: auto; + margin-left: auto; +} +.thumbnail .caption { + padding: 9px; + color: #333333; +} + +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #F37021; +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} + +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} + +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} + +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} + +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #F37021; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + 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: 40px 40px; +} + +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-bar-success { + background-color: #3A833A; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + 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); +} + +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + 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); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + 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); +} + +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + 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); +} + +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media-body { + width: 10000px; +} + +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} + +.media-right, +.media > .pull-right { + padding-left: 10px; +} + +.media-left, +.media > .pull-left { + padding-right: 10px; +} + +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} + +.media-middle { + vertical-align: middle; +} + +.media-bottom { + vertical-align: bottom; +} + +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.media-list { + padding-left: 0; + list-style: none; +} + +.list-group { + padding-left: 0; + margin-bottom: 20px; +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { + color: #777777; + cursor: not-allowed; + background-color: #eeeeee; +} +.list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { + color: #777777; +} +.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #F37021; + border-color: #F37021; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { + color: #fdede3; +} + +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, a.list-group-item:focus, +button.list-group-item:hover, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} + +button.list-group-item { + width: 100%; + text-align: left; +} + +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} + +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, a.list-group-item-success:focus, +button.list-group-item-success:hover, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, a.list-group-item-success.active:hover, a.list-group-item-success.active:focus, +button.list-group-item-success.active, +button.list-group-item-success.active:hover, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} + +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} + +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, a.list-group-item-info:focus, +button.list-group-item-info:hover, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, a.list-group-item-info.active:hover, a.list-group-item-info.active:focus, +button.list-group-item-info.active, +button.list-group-item-info.active:hover, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} + +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, a.list-group-item-warning:focus, +button.list-group-item-warning:hover, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, +button.list-group-item-warning.active, +button.list-group-item-warning.active:hover, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} + +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} + +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, a.list-group-item-danger:focus, +button.list-group-item-danger:hover, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, +button.list-group-item-danger.active, +button.list-group-item-danger.active:hover, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} + +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel-body { + padding: 15px; +} +.panel-body:before, .panel-body:after { + display: table; + content: " "; +} +.panel-body:after { + clear: both; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} + +.list-group + .panel-footer { + border-top-width: 0; +} + +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} + +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} + +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} + +.panel-primary { + border-color: #F37021; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #F37021; + border-color: #F37021; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #F37021; +} +.panel-primary > .panel-heading .badge { + color: #F37021; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #F37021; +} + +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} + +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} + +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} + +.embed-responsive-4by3 { + padding-bottom: 75%; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-lg { + padding: 24px; + border-radius: 6px; +} + +.well-sm { + padding: 9px; + border-radius: 3px; +} + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: 0.2; +} +.close:hover, .close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: 0.5; +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + appearance: none; +} + +.modal-open { + overflow: hidden; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} + +.modal-content { + position: relative; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: 0.5; +} + +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header:before, .modal-header:after { + display: table; + content: " "; +} +.modal-header:after { + clear: both; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.428571429; +} + +.modal-body { + position: relative; + padding: 15px; +} + +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer:before, .modal-footer:after { + display: table; + content: " "; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Open Sans", sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.428571429; + line-break: auto; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + font-size: 12px; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: 0.9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Open Sans", sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.428571429; + line-break: auto; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + font-size: 14px; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow, .popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999999; + border-top-color: fadein(rgba(0, 0, 0, 0.2), 5%); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999999; + border-right-color: fadein(rgba(0, 0, 0, 0.2), 5%); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: fadein(rgba(0, 0, 0, 0.2), 5%); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: fadein(rgba(0, 0, 0, 0.2), 5%); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -moz-transition: -moz-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + -moz-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: 0.5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000", endColorstr="#00000000", GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000", endColorstr="#80000000", GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, .carousel-control:focus { + color: #fff; + text-decoration: none; + outline: 0; + filter: alpha(opacity=90); + opacity: 0.9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: "‹"; +} +.carousel-control .icon-next:before { + content: "›"; +} + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9 ; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, .account-masthead .account ul:before, .account-masthead:before, .clearfix:after, .account-masthead .account ul:after, .account-masthead:after { + display: table; + content: " "; +} +.clearfix:after, .account-masthead .account ul:after, .account-masthead:after { + clear: both; +} + +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} + +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.hidden { + display: none !important; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} +.visible-xs { + display: none !important; +} + +.visible-sm { + display: none !important; +} + +.visible-md { + display: none !important; +} + +.visible-lg { + display: none !important; +} + +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} + +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} + +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} + +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} + +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} + +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} + +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} + +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} + +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} + +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} + +@media print { + .hidden-print { + display: none !important; + } +} +.tag { + display: inline-block; + margin-bottom: 4px; + color: #111; + background-color: #f6f6f6; + padding: 1px 10px; + border: 1px solid #dddddd; + border-radius: 100px; + -webkit-box-shadow: inset 0 1px 0 white; + box-shadow: inset 0 1px 0 white; +} + +a.tag:hover { + text-decoration: none; + color: #fff; + background-color: #F37021; + border: 1px solid #d5580c; + -webkit-box-shadow: inset 0 1px 0 #f68f51; + box-shadow: inset 0 1px 0 #f68f51; +} + +.pill { + display: inline-block; + background-color: #4e5f65; + color: #FFF; + padding: 2px 10px 1px 10px; + margin-right: 5px; + font-weight: normal; + border-radius: 100px; +} +.pill a { + color: #FFF; +} +.pill a.remove { + font-size: 11px; +} + +.list-unstyled { + margin: 0; + list-style: none; +} + +.module-narrow .simple-list > li { + padding-left: 15px; + padding-right: 15px; + position: relative; +} + +.listing li { + text-align: right; + margin-bottom: 5px; +} + +.listing .key { + clear: right; + font-weight: bold; +} + +.js .tab-content { + display: none; +} + +.js .tab-content.active { + display: block; +} + +.box, .wrapper { + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); + box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.05); +} + +.module > .page-header { + margin-top: 15px; +} +.module > .module-content:nth-child(2n) { + padding-top: 15px; +} + +.module-heading { + margin: 0; + padding: 10px 25px; + font-size: 14px; + line-height: 1.3; + background-color: #f6f6f6; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; +} +.module-heading:before, .module-heading:after { + display: table; + content: " "; +} +.module-heading:after { + clear: both; +} + +.module-content { + padding: 30px; +} +.module-content .add-to-group .btn-primary { + margin-bottom: 30px; +} + +.module:first-child .module-heading { + border-radius: 3px 0 0 0; + border-top-width: 0; +} + +.module-footer { + padding: 7px 25px 7px; + margin: 0; + border-top: 1px dotted #ddd; +} + +.module .read-more { + font-weight: bold; + color: #000; +} + +.pagination-wrapper { + text-align: center; + border-top: 1px solid #eeeeee; + padding-top: 10px; +} + +.module h1 { + margin-top: 0; + margin-bottom: 20px; +} + +.module-shallow .module-content { + padding: 10px; + margin: 0; +} + +.module-shallow .module-tags { + margin-top: 0; + margin-bottom: 0; +} + +.module-shallow .module-content:first-child { + padding-top: 10px; +} + +.module-shallow .module-content:last-child { + padding-bottom: 10px; +} + +.module-narrow .module-heading, +.module-narrow .module-content, +.module-narrow .module-footer { + padding-left: 15px; + padding-right: 15px; +} + +.module-grid { + margin: 0; + list-style: none; +} + +.module-item { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; + padding-top: 10px; + padding-bottom: 10px; + padding-right: 50px; + overflow: hidden; + position: relative; +} +@media (min-width: 992px) { + .module-item { + float: left; + width: 50%; + } +} + +.module-item.first { + clear: left; +} + +.group .content img { + margin: 0 -5px 5px; + max-width: initial; +} + +.group .content h3 { + font-size: 14px; + line-height: 1.3; +} + +.group-listing { + margin-left: -20px; +} + +.ckanext-datapreview { + position: relative; + clear: both; + padding-top: 15px; + margin-top: 0; +} +.ckanext-datapreview > iframe { + min-height: 650px; +} +.ckanext-datapreview > img { + max-height: 500px; + max-width: 100%; + overflow: hidden; +} + +.package-info h4 { + margin-bottom: 10px; +} + +.module-resource { + z-index: 5; + position: relative; + background-color: #fff; + border-bottom: 1px solid #ddd; + margin-top: 0; + margin-bottom: 0; + border-radius: 3px 3px 0 0; +} +.module-resource .actions { + position: relative; + float: right; + top: -10px; + right: -15px; +} + +.module .module-tags { + padding-bottom: 8px; +} + +.no-nav .module:last-child { + margin-top: 0; +} + +.module-image { + float: left; + width: 50px; + height: 50px; + line-height: 50px; + text-align: center; + margin-right: 15px; +} +.module-image img { + max-width: 50px; + max-height: 50px; + vertical-align: middle; +} + +.banner { + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-transform-origin: center, center; + -moz-transform-origin: center, center; + -ms-transform-origin: center, center; + -o-transform-origin: center, center; + transform-origin: center, center; + position: absolute; + top: 15px; + right: -35px; + width: 80px; + color: #fff; + background-color: #000000; + padding: 1px 20px; + font-size: 11px; + text-align: center; + text-transform: uppercase; +} + +.media-grid, .module-grid { + margin: 0; + list-style: none; + padding-left: 0px; + min-height: 205px; + padding-top: 15px; + background: #fbfbfb url("../../../base/images/bg.png"); + border: 1px solid #ddd; + border-width: 1px 0; +} +.media-grid:before, .module-grid:before, .media-grid:after, .module-grid:after { + display: table; + content: " "; +} +.media-grid:after, .module-grid:after { + clear: both; +} + +.media-item, .module-item { + position: relative; + float: left; + width: 178px; + padding: 15px; + margin: 0 0 15px 15px; + background-color: white; + border-radius: 3px; +} +.media-item span.count, .module-item span.count { + color: #999; +} +.media-item .media-image, .module-item .media-image { + margin-bottom: 5px; +} +.media-item .media-edit, .module-item .media-edit { + opacity: 0; + position: absolute; + right: 15px; + bottom: 15px; + -webkit-transition: opacity 0.2s ease-in; + -o-transition: opacity 0.2s ease-in; + transition: opacity 0.2s ease-in; +} +.media-item:hover, .module-item:hover { + z-index: 1; +} +.media-item:hover .media-edit, .module-item:hover .media-edit { + opacity: 1; +} + +.media-view { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + border: 1px solid #ddd; + overflow: hidden; + -webkit-transition: all 0.2s ease-in; + -o-transition: all 0.2s ease-in; + transition: all 0.2s ease-in; + border-radius: 3px; +} +.media-view:hover, .media-view.hovered { + border-color: #000000; + -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); +} +.media-view:hover .banner, .media-view.hovered .banner { + background-color: #000000; +} +.media-view span { + display: none; +} +.media-view .banner { + display: block; + background-color: #b7b7b7; + -webkit-transition: background-color 0.2s ease-in; + -o-transition: background-color 0.2s ease-in; + transition: background-color 0.2s ease-in; +} + +.media-image { + border-radius: 4px; +} +.media-image img { + min-width: 100%; +} + +.media-heading { + font-size: 18px; + line-height: 1.3; + margin: 5px 0; + -ms-word-break: break-all; + word-break: break-all; + /* Non standard for webkit */ + word-break: break-word; + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; +} + +.media-description { + word-wrap: break-word; + word-break: break-all; +} + +.media-overlay { + position: relative; + min-height: 35px; +} + +.media-overlay .media-heading { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 12px 10px; + margin: 0; + background-color: #000; + background-color: rgba(0, 0, 0, 0.8); + font-size: 13px; + color: #fff; + z-index: 1; + border-radius: 0 0 3px 3px; +} + +.media-overlay .media-image { + float: none; + display: block; + margin-right: 0; +} + +.media-item.is-expander .truncator-link, .is-expander.module-item .truncator-link { + -webkit-transition: opacity 0.2s ease-in; + -o-transition: opacity 0.2s ease-in; + transition: opacity 0.2s ease-in; + position: absolute; + z-index: 10; + left: 15px; + bottom: 15px; + opacity: 0; +} +.media-item.is-expander:hover, .is-expander.module-item:hover { + padding-bottom: 35px; +} +.media-item.is-expander:hover .truncator-link, .is-expander.module-item:hover .truncator-link { + opacity: 1; +} + +.wide .media-item, .wide .module-item { + width: 186px; +} + +.nav-simple, +.nav-aside { + margin: 0; + list-style: none; + padding-bottom: 0; +} +.nav-simple:before, .nav-simple:after, +.nav-aside:before, +.nav-aside:after { + display: table; + content: " "; +} +.nav-simple:after, +.nav-aside:after { + clear: both; +} +.nav-simple > li, +.nav-aside > li { + font-size: 12px; + line-height: 1.1666666667em; + padding: 7px 25px; + border-bottom: 1px dotted #ddd; +} +.nav-simple > li:last-of-type, +.nav-aside > li:last-of-type { + border-bottom: 0; +} +.nav-simple .ckan-icon, .nav-simple .format-label, +.nav-aside .ckan-icon, +.nav-aside .format-label { + position: relative; + top: 0px; +} + +.nav-aside { + border-top: 1px dotted #DDD; + border-bottom: 1px dotted #DDD; + margin-bottom: 15px; +} + +.nav-item > a, +.nav-aside li a { + color: #333; + font-size: 14px; + line-height: 1.428571429; + margin: -7px -25px; + padding: 7px 25px; +} + +.nav-item.active, +.nav-aside li.active { + background-color: #f6f6f6; +} + +.nav-item.active > a, +.nav-aside li.active a { + position: relative; + color: #FFF; + background-color: #647A82; +} +.nav-item.active > a:hover, +.nav-aside li.active a:hover { + color: #FFF; + background-color: #647A82; +} + +@media (min-width: 768px) { + .nav-item.active > a:before, + .nav-aside li.active a:before { + content: " "; + position: absolute; + border: 20px solid transparent; + border-right: none; + border-left-color: #647A82; + border-left-width: 6px; + top: 0; + bottom: 0; + right: -6px; + width: 6px; + height: 34px; + } +} +.nav-pills > li { + float: none; +} +@media (min-width: 768px) { + .nav-pills > li { + float: left; + } +} + +.nav-item.active > a span, +.nav-aside li.active a span { + white-space: nowrap; + overflow: hidden; +} + +.module-narrow .nav-item > a, +.module-narrow .nav-aside li a { + padding-left: 15px; + padding-right: 15px; + position: relative; +} + +.module-narrow .nav-item.image, +.module-narrow .nav-aside li.image { + position: relative; +} + +.module-narrow .nav-item.image > a, +.module-narrow .nav-aside li.image a { + padding-left: 42px; + padding-right: 42px; +} + +.module-narrow .nav-item.image > img, +.module-narrow .nav-aside li.image img { + position: absolute; + top: 50%; + left: 15px; + width: 20px; + height: 20px; + margin-top: -10px; + z-index: 2; +} + +.nav-facet .nav-item > a:hover:after, +.nav-facet .nav-item.active > a:after { + display: inline-block; + vertical-align: text-bottom; + position: relative; + top: 2px; + width: 16px; + height: 16px; + background-image: url("../../../base/images/sprite-ckan-icons.png"); + background-repeat: no-repeat; + background-position: 16px 16px; + content: ""; + position: absolute; + top: 50%; + right: 5px; + margin-top: -8px; +} + +.nav-facet .nav-item.active > a:after { + right: 3px; +} + +.user-list { + margin: 0; + list-style: none; +} +.user-list li { + margin: 0 0 10px 0; +} +.user-list .user-image { + margin-right: 3px; + margin-bottom: 3px; + border-radius: 100px; +} + +.nav-facet-tertiary { + margin: 10px 0; +} +.nav-facet-tertiary .module-heading { + margin-bottom: 5px; + padding: 8px 12px; + border-bottom-width: 0; + border-radius: 5px; +} +.nav-facet-tertiary .module-heading i { + display: none; +} +.nav-facet-tertiary .module-footer { + padding: 8px 12px; + border-top-width: 0; +} +.nav-facet-tertiary .module-footer a { + font-weight: normal; + color: #8C8C8C; +} +.nav-facet-tertiary .nav { + margin-bottom: 0; +} +.nav-facet-tertiary .module-content.empty { + padding: 8px 12px; + margin-top: 0; +} +.nav-facet-tertiary .nav li.active { + position: relative; +} +.nav-facet-tertiary .nav li.active > a:hover:after, +.nav-facet-tertiary .nav li.active > a:after { + display: inline-block; + vertical-align: text-bottom; + position: relative; + top: 2px; + width: 16px; + height: 16px; + background-image: url("../../../base/images/sprite-ckan-icons.png"); + background-repeat: no-repeat; + background-position: 16px 16px; + content: ""; + position: absolute; + top: 50%; + right: 5px; + margin-top: -8px; +} + +.nav-simple > .nav-btn { + padding-left: 0; + padding-right: 0; + text-align: center; +} +.nav-simple > .nav-btn .btn { + display: inline-block; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.js .js-hide { + display: none; +} + +.js .js-hide.active { + display: block; +} + +.btn, +label { + font-weight: bold; +} + +.btn-rounded { + border-radius: 100px; + padding-left: 15px; + padding-right: 15px; +} + +label { + cursor: pointer; + font-size: 14px; +} + +label:after { + content: ":"; +} + +label.radio:after, +label.checkbox:after { + content: ""; +} + +.cr-controls-reset, .radio input[type=radio], .checkbox input[type=checkbox] { + position: relative; + margin-left: initial; + margin-right: 5px; + top: 2px; +} + +select { + padding: 4px; +} + +textarea { + max-width: 100%; +} + +.form-group .btn { + position: relative; + top: -2px; +} + +.unselectable, .checkbox, +.radio { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.control-full input, +.control-full select, +.control-full textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: auto; + width: 100%; +} + +.control-large .control-label { + font-size: 1.375em; +} + +.control-required { + color: #c6898b; +} + +.form-actions .control-required-message { + float: left; + margin-left: 20px; + margin-bottom: 0; + line-height: 30px; +} +.form-actions .control-required-message:first-child { + margin-left: 0; +} + +.form-actions { + overflow: auto; +} + +@media (min-width: 768px) { + .form-actions { + text-align: right; + } +} +.form-actions .action-info { + line-height: 2; + text-align: left; + color: #707070; + margin: 0; +} + +@media (min-width: 768px) { + .form-actions .action-info { + float: left; + width: 50%; + margin-right: 15px; + } +} +.form-actions .action-info.small { + font-size: 11px; + line-height: 1.2; +} + +@media (max-width: 991px) { + .form-actions .btn { + margin-top: 5px; + } +} +.form-group .info-block { + position: relative; + display: block; + font-size: 11px; + color: #6e6e6e; + line-height: 1.3; + margin-top: 6px; +} + +.form-group .info-help { + padding: 6px 0; +} +.form-group .info-help:before { + display: none; +} + +.form-group .info-help-tight { + margin-top: -10px; +} + +@media (min-width: 992px) { + .form-group .info-block { + padding: 5px 0 5px 10px; + } + .form-group .info-inline { + margin-top: 0; + padding-bottom: 0; + } +} +form .control-medium .info-block.info-inline { + width: 165px; +} + +.form-group .info-block:before { + font-size: 2.2em; + position: absolute; + left: 0; + top: 2px; +} + +.form-group .info-inline:before { + top: 8px; +} + +.info-block .icon-large, +.info-inline .icon-large { + float: left; + font-size: 22px; + margin-right: 15px; +} + +.form-group .info-block a { + color: #6e6e6e; + text-decoration: underline; +} + +.form-inline input { + padding-bottom: 9px; +} + +.form-inline select { + margin-top: 0; +} + +.form-inline .btn { + margin-left: 5px; +} + +.form-narrow label { + margin-bottom: 0; +} + +.form-narrow select { + width: 100%; +} + +.form-narrow .form-actions { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px 0; +} + +input[data-module=autocomplete], +select[data-module=autocomplete] { + width: 100%; +} + +.form-select label { + margin-right: 5px; +} + +.simple-input label, +.simple-input button { + display: none; +} + +.simple-input .field { + position: relative; +} + +.simple-input .field-bordered { + border-bottom: 1px dotted #ddd; +} + +.simple-input .field input { + width: 100%; + height: auto; +} + +.simple-input .field .btn-search { + position: absolute; + display: block; + height: 17px; + width: 17px; + padding: 0; + top: 50%; + right: 10px; + margin-top: -10px; + background-color: transparent; + border: none; + color: #999; + -webkit-transition: color 0.2s ease-in; + -o-transition: color 0.2s ease-in; + transition: color 0.2s ease-in; +} +.simple-input .field .btn-search:hover { + color: #000; +} + +.editor textarea { + border-radius: 3px 3px 0 0; + border-bottom: none; +} + +.editor .editor-info-block { + border-radius: 0 0 3px 3px; + display: block; + float: none; + padding: 4px 10px; + background: #ebebeb; + width: auto; + border: 1px solid #ccc; + border-top: none; + font-size: 11px; + color: #282828; +} + +.editor .editor-info-block a { + color: #F37021; + text-decoration: none; +} + +.control-custom { + font-size: 0; +} +.control-custom .input-group { + margin-bottom: 10px; +} + +.control-custom .checkbox { + display: inline-block; + margin: 2px 0 2px 10px; +} + +.control-custom .checkbox input { + width: auto; +} + +.control-custom.disabled label, +.control-custom.disabled input { + color: #aaa; + text-decoration: line-through; + text-shadow: none; +} + +.control-custom.disabled input { + -webkit-box-shadow: none; + box-shadow: none; + background-color: #f3f3f3; +} + +.control-custom.disabled .checkbox { + color: #444; + text-decoration: none; +} + +.control-custom .checkbox.btn { + border-radius: 15px; + position: relative; + top: 0; + left: 5px; + height: 1px; + width: 9px; + padding: 3px 8px; + line-height: 18px; +} + +.control-custom .checkbox.btn span { + display: none; + width: 30px; +} + +.control-custom .checkbox.btn:before { + position: relative; + top: 1px; + left: -1px; + color: #fff; +} + +.control-custom .checkbox input { + display: none; +} + +.alert-danger a { + color: #b55457; +} + +.form-group.has-error input, +.form-group.has-error select, +.form-group.has-error textarea, +.form-group.has-error .input-group .input-group-addon, +.form-group.has-error .input-group .input-group-addon { + border-color: #c6898b; +} + +.form-group select, +.form-group .select2-container { + max-width: 100%; +} + +.error-inline { + color: #b55457; + margin: 10px; +} + +.error-block, +.error-inline { + font-size: 0.8em; +} + +.error-block { + border-radius: 0 0 3px 3px; + display: block; + padding: 6px 8px 3px; + background: #c6898b; + color: #fff; + width: auto; +} + +.control-medium .error-block { + width: auto; +} + +.control-full .error-block { + width: auto; +} + +.form-group.has-error .input-group .error-block, +.control-custom.error .error-block { + width: auto; +} + +.control-custom.error .error-block { + width: auto; + border-radius: 3px; +} + +.control-select.error .error-block { + width: auto; +} + +.stages { + margin: 0; + list-style: none; + color: #aeaeae; + counter-reset: stage; + overflow: hidden; + margin-bottom: 30px; +} +.stages:before, .stages:after { + display: table; + content: " "; +} +.stages:after { + clear: both; +} + +.stages li { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + line-height: 27px; + counter-increment: stage; + width: 50%; + background-color: #EDEDED; + float: left; + padding: 10px 20px; + position: relative; + z-index: 0; +} + +.stages li:before { + border-radius: 14px; + content: counter(stage); + display: inline-block; + width: 27px; + height: 27px; + margin-right: 5px; + font-weight: bold; + text-align: center; + color: #fff; + background-color: #aeaeae; + z-index: 1; +} + +.stages li:after { + left: 0; + border: solid rgba(237, 237, 237, 0); + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-top-color: #EDEDED; + border-bottom-color: #EDEDED; + border-width: 29px; + top: 50%; + margin-top: -29px; + margin-left: -30px; +} + +.stages li.last { + position: relative; + right: -1px; +} + +.stages li.last, +.stages li.last .highlight { + border-radius: 0 3px 0 0; +} + +.stages li.first:after { + content: none; + border: none; +} + +.stages li.active:after { + border-color: rgba(140, 198, 138, 0); + border-top-color: #8cc68a; + border-bottom-color: #8cc68a; +} + +.stages li.complete:after { + border-color: rgba(197, 226, 196, 0); + border-top-color: #c5e2c4; + border-bottom-color: #c5e2c4; +} + +.stages.stage-3 li.complete:first-child:after { + content: none; +} + +.stages li.active, +.stages li.complete { + background: none; +} + +.stages li.active:before { + color: #8cc68a; + background: #fff; +} + +.stages li.complete:before { + color: #c5e2c4; + background: #eef6ed; +} + +.stages li .highlight { + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + padding: 10px 52px; + border: none; + text-align: left; + text-decoration: none; + line-height: 27px; + z-index: -1; +} + +@media (max-width: 991px) { + .stages li .highlight { + text-indent: -9999px; + } +} +.stages li.active .highlight { + color: #fff; + background: #8cc68a; +} + +.stages li.complete .highlight { + color: #eef6ed; + background: #c5e2c4; +} + +.alert > :last-child { + margin-bottom: 0; +} + +.slug-preview { + font-size: 14px; + line-height: 1.5; + margin-top: 5px; + margin-left: 10px; +} + +.slug-preview-value { + background-color: #faedcf; + margin-right: 3px; +} + +.select2-container .select2-choice input, +.select2-container-multi .select2-choices .select2-search-field:first-child input { + font-size: 14px; +} + +.select2-container-multi .select2-choices .select2-search-field input { + height: 29px; +} + +.select2-container .select2-choice input, +.select2-container-multi .select2-choices .select2-search-field:first-child input { + padding-left: 10px; +} + +.select2-container { + margin-top: 1px; + margin-bottom: 7.5px; +} + +.select2-container-multi { + margin-top: 0; +} + +.select2-container-multi .select2-choices .select2-search-choice { + padding: 5px 8px 5px 22px; +} + +.select2-container-multi.select2-container .select2-choices { + padding-top: 3px; + padding-bottom: 3px; +} + +.select2-search-choice-close, +.select2-container-multi .select2-search-choice-close { + top: 6px; + left: 5px; +} + +.select2-container-multi .select2-choices { + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + background-color: #fff; + border: 1px solid #ccc; +} + +.select2-container-active .select2-choices, +.select2-container-multi.select2-container-active .select2-choices { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9 ; + /* IE6-9 */ +} + +.select2-container-multi .select2-drop { + margin-top: -2px; +} + +.select2-container .select2-results li { + line-height: 18px; + padding-top: 4px; + padding-bottom: 4px; +} + +.control-full .select2-container { + max-width: 100%; +} + +.form-group.has-error .select2-container input:focus, +.form-group.has-error .select2-container select:focus, +.form-group.has-error .select2-container textarea:focus { + -webkit-box-shadow: none; + box-shadow: none; +} + +.js .image-upload #field-image-url { + padding-right: 90px; +} +.js .image-upload #field-image-upload { + cursor: pointer; + position: absolute; + z-index: 1; + filter: alpha(opacity=0); + opacity: 0; +} +.js .image-upload .controls { + position: relative; +} +.js .image-upload .btn { + position: relative; + top: 0; + margin-right: 10px; +} +.js .image-upload .btn.hover { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} +.js .image-upload .btn-remove-url { + position: absolute; + margin-right: 0; + top: 6px; + right: 5px; + padding: 0 12px; + border-radius: 100px; +} +.js .image-upload .btn-remove-url .icon-remove { + margin-right: 0; +} +.js .image-upload .error-inline { + margin-top: 5px; + margin-left: 2px; + font-weight: bold; +} + +.add-member-form .control-label { + display: block; +} + +.add-member-or-wrap { + display: flex; + align-items: flex-end; + justify-content: center; +} +@media (max-width: 991px) { + .add-member-or-wrap { + margin-bottom: 30px; + } +} +@media (min-width: 992px) { + .add-member-or-wrap { + min-height: 100px; + } +} + +.add-member-or { + text-align: center; + text-transform: uppercase; + color: #777777; + font-weight: bold; +} + +#recaptcha_table { + table-layout: inherit; + line-height: 1; +} + +.dataset-item { + border-bottom: 1px dotted #ddd; + padding-bottom: 20px; + margin-bottom: 20px; +} + +@media (max-width: 991px) { + .dataset-item { + word-wrap: break-word; + } +} +.dataset-item:last-of-type { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} + +.dataset-heading { + font-size: 16px; + margin-top: 0; + margin-bottom: 8px; + line-height: 1.3; +} + +.dataset-heading a { + color: #333; +} + +.dataset-heading .label { + position: relative; + top: -1px; +} + +.label-inverse { + background-color: #555555; +} + +.dataset-private { + margin-right: 10px; + text-transform: uppercase; +} +.dataset-private .icon-lock { + width: 9px; +} +.dataset-private.pull-right { + margin-right: 0; +} + +.dataset-resources { + margin-top: 8px; +} + +.dataset-resources li { + display: inline; +} + +.dataset-resources li a { + background-color: #6e6e6e; +} + +.dataset-heading .popular { + top: 0; +} + +.resource-list { + margin: 0; + list-style: none; + padding-left: 0; + margin: -10px -10px 10px -10px; +} + +.resource-item { + position: relative; + padding: 10px 10px 10px 60px; + margin-bottom: 0px; + border-radius: 3px; +} +.resource-item:hover { + background-color: #eee; +} + +.resource-item .heading { + color: #000; + font-size: 14px; + font-weight: bold; +} + +.resource-item .format-label { + position: absolute; + top: 10px; + left: 10px; +} + +.resource-item .description { + font-size: 12px; + margin-bottom: 0; + min-height: 12px; +} + +.resource-item .btn-group { + position: absolute; + top: 9px; + right: 10px; +} + +@media (max-width: 991px) { + .resource-item .btn-group { + display: none; + } +} +.resource-list.reordering .resource-item { + border: 1px solid #ddd; + margin-bottom: 10px; + cursor: move; +} +.resource-list.reordering .resource-item .handle { + display: block; + position: absolute; + color: #888; + left: -31px; + top: 50%; + margin-top: -15px; + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + border: 1px solid #ddd; + border-width: 1px 0 1px 1px; + background-color: #fff; + border-radius: 20px 0 0 20px; +} +.resource-list.reordering .resource-item .handle:hover { + text-decoration: none; +} +.resource-list.reordering .resource-item:hover .handle { + background-color: #eee; +} +.resource-list.reordering .resource-item.ui-sortable-helper { + background-color: #eee; + border: 1px solid #F37021; +} +.resource-list.reordering .resource-item.ui-sortable-helper .handle { + background-color: #eee; + border-color: #F37021; + color: #333; +} + +.resource-item .handle { + display: none; +} + +.tag-list { + margin: 0; + list-style: none; + padding: 10px 10px 5px 10px; +} + +.tag-list li { + display: inline-block; + margin-right: 5px; +} + +.tag-list li:last-child { + margin-right: 0; +} + +.additional-info td, +.additional-info th { + width: 50%; +} + +.label[data-format=html], +.label[data-format*=html] { + background-color: #2E759E; +} + +.label[data-format=json], +.label[data-format*=json] { + background-color: #D63B00; +} + +.label[data-format=xml], +.label[data-format*=xml] { + background-color: #D63B00; +} + +.label[data-format=text], +.label[data-format*=text] { + background-color: #1A7EA3; +} + +.label[data-format=csv], +.label[data-format*=csv] { + background-color: #856A00; +} + +.label[data-format=xls], +.label[data-format*=xls] { + background-color: #207E42; +} + +.label[data-format=zip], +.label[data-format*=zip] { + background-color: #686868; +} + +.label[data-format=api], +.label[data-format*=api] { + background-color: #D22D81; +} + +.label[data-format=pdf], +.label[data-format*=pdf] { + background-color: #e0051e; +} + +.label[data-format=rdf], +.label[data-format*=rdf], +.label[data-format*=nquad], +.label[data-format*=ntriples], +.label[data-format*=turtle] { + background-color: #0b4498; +} + +.view-list { + margin: 0; + list-style: none; +} +.view-list li { + position: relative; + margin-bottom: 10px; +} +.view-list li a { + display: block; + min-height: 50px; + padding: 10px; + border: 1px solid #ddd; + overflow: hidden; + border-radius: 3px; +} +.view-list li a .icon { + float: left; + width: 50px; + height: 50px; + overflow: hidden; + margin-right: 10px; + color: #444; + background-color: #eee; + border-radius: 3px; +} +.view-list li a .icon i { + display: block; + text-align: center; + font-size: 28px; + line-height: 50px; +} +.view-list li a h3 { + font-weight: bold; + color: #000; + font-weight: bold; + font-size: 16px; + margin: 0 0 3px 0; +} +.view-list li a p { + margin: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + color: #444; +} +.view-list li a.active, .view-list li a:hover { + text-decoration: none; + border-color: #F37021; +} +.view-list li a.active .icon, .view-list li a:hover .icon { + background-color: #F37021; + color: #f6f6f6; +} +.view-list li .arrow { + position: absolute; + display: none; + border: 8px solid transparent; + border-top-color: #F37021; + left: 50%; + bottom: -15px; + margin-left: -4px; +} +.view-list li.active a { + text-decoration: none; + border-color: #F37021; +} +.view-list li.active a .icon { + background-color: #F37021; + color: #f6f6f6; +} +.view-list li.active .arrow { + display: block; +} +.view-list.stacked { + overflow-y: hidden; + overflow-x: auto; + height: 100px; + white-space: nowrap; +} +.view-list.stacked li { + display: inline-block; + width: 250px; + margin-right: 10px; +} +.view-list.stacked li:last-child { + margin-right: 0; +} +.view-list.stacked::-webkit-scrollbar { + width: 7px; + height: 7px; +} +.view-list.stacked::-webkit-scrollbar-track { + border-radius: 10px; + background-color: #f6f6f6; +} +.view-list.stacked::-webkit-scrollbar-thumb { + border-radius: 10px; + background-color: #c3c3c3; +} +.view-list.stacked::-webkit-scrollbar-thumb:hover { + background-color: #F37021; +} + +.resource-view { + margin-top: 20px; +} + +#activity-archive-notice { + clear: both; +} + +/* diff styles */ +table.diff { + font-family: Courier; + border: medium; +} + +.diff_header { + background-color: #e0e0e0; +} + +td.diff_header { + text-align: right; +} + +.diff_next { + background-color: #c0c0c0; +} + +.diff_add { + background-color: #aaffaa; +} + +.diff_chg { + background-color: #ffff77; +} + +.diff_sub { + background-color: #ffaaaa; +} + +.accordion-item { + background-color: #f6f6f6; + cursor: pointer; + padding: 10px; + margin-bottom: 5px; + width: 100%; + text-align: left; + border: none; + outline: none; + transition: 0.4s; +} +.accordion-item:hover { + background-color: #dddddd; +} + +.purge-all { + float: right; + margin-bottom: 15px; +} + +.search-form { + margin-bottom: 20px; + padding-bottom: 25px; + border-bottom: 1px dotted #ddd; +} +.search-form .search-input { + position: relative; + margin-bottom: 20px; +} +.search-form .search-input input { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + width: 100%; + height: auto; +} +.search-form .search-input button { + cursor: pointer; + display: block; + position: absolute; + top: 50%; + margin-top: -10px; + right: 10px; + height: 20px; + padding: 0; + border: none; + background: transparent; +} +.search-form .search-input button span { + display: none; +} +.search-form .search-input button i { + color: #ccc; + -webkit-transition: color 0.2s ease-in; + -o-transition: color 0.2s ease-in; + transition: color 0.2s ease-in; +} +.search-form .search-input button:hover i { + color: #000; +} +.search-form .search-input.search-giant input { + font-size: 16px; + padding: 15px; +} +.search-form .search-input.search-giant button { + margin-top: -15px; + right: 15px; +} +.search-form .search-input.search-giant button i { + font-size: 28px; + width: 28px; +} +.search-form .control-order-by label, +.search-form .control-order-by select { + display: inline; +} +.search-form .control-order-by .form-control { + width: auto; +} +.search-form .filter-list { + color: #444; + line-height: 32px; + margin: 10px 0 0 0; +} +.search-form .filter-list .pill { + line-height: 21px; +} +.search-form .filter-list .extra { + margin-top: 10px; + font-size: 18px; + font-weight: normal; + color: #000; +} +.search-form.no-bottom-border { + border-bottom-width: 0; + margin-bottom: 0; +} +.search-form .search-input-group { + margin-bottom: 30px; +} + +.search-form button { + padding: 10.6px; +} + +.tertiary .control-order-by { + float: none; + margin: 0; +} +.tertiary .control-order-by label { + display: block; + margin-bottom: 5px; + font-weight: normal; + font-size: 12px; +} +.tertiary .control-order-by select { + display: block; + font-size: 12px; + width: 100%; +} +.tertiary .search-input { + margin-bottom: 10px; +} + +@media (min-width: 992px) { + .search-form .control-order-by { + float: right; + margin-left: 15px; + } + .tertiary .search-form .control-order-by { + float: none; + margin: 0; + } +} +.group .media-vertical .image { + margin: 0 -5px 5px; +} + +.group-list:nth-child(odd) { + clear: left; +} + +.group-list .module-heading { + padding-top: 15px; + padding-bottom: 15px; +} + +.group-list .dataset-content { + min-height: 54px; +} + +.group-list .module-heading h3 { + margin-bottom: 2px; +} + +.group-list .module-heading h3 a { + color: #333; +} + +.group-list .module-heading .media-image { + overflow: hidden; + max-height: 60px; +} +.group-list .module-heading .media-image img { + max-width: 85px; +} + +.toolbar { + position: relative; + margin-bottom: 10px; + padding: 5px 0; +} +.toolbar:before, .toolbar:after { + display: table; + content: " "; +} +.toolbar:after { + clear: both; +} + +.page_primary_action { + margin-bottom: 20px; +} + +.toolbar .breadcrumb { + -webkit-box-shadow: none; + box-shadow: none; + position: relative; + float: left; + margin: 0; + padding: 0; + border: none; + background: none; + font-size: 1.375em; +} +.toolbar .breadcrumb:before, .toolbar .breadcrumb:after { + display: table; + content: " "; +} +.toolbar .breadcrumb:after { + clear: both; +} + +.toolbar .home a { + text-decoration: none; +} + +.toolbar .home span { + display: none; +} + +.toolbar .breadcrumb a { + color: #505050; +} + +@media (max-width: 767px) { + .toolbar .breadcrumb { + color: #fff; + text-shadow: none; + } + .toolbar .breadcrumb a { + color: #fff; + text-shadow: none; + } +} +.toolbar .breadcrumb .active a, +.toolbar .breadcrumb a.active { + font-weight: bold; +} + +.actions { + margin: 0; + list-style: none; + position: absolute; + top: 10px; + right: 10px; + z-index: 1; +} + +.actions li { + display: inline-block; + margin-right: 5px; +} + +.actions li:last-of-type { + margin-right: 0; +} + +.hide-heading { + display: none; +} + +.page-header { + margin-top: 30px; + border-bottom: 1px solid #ddd; + background-color: #f6f6f6; + border-radius: 0 3px 0 0; +} +.page-header.module-content { + padding-top: 15px; + padding-bottom: 0; +} +.page-header:before, .page-header:after { + display: table; + content: " "; +} +.page-header:after { + clear: both; +} +.page-header .nav-tabs { + float: left; + margin-bottom: -1px; +} +.page-header .nav-tabs li.active a, +.page-header .nav-tabs a:hover { + background-color: #fff; +} +.page-header .content_action { + float: right; + margin-top: -3px; +} + +.no-nav .page-header { + border-radius: 3px 3px 0 0; +} + +.nav-tabs-plain { + padding: 0 25px; +} +.nav-tabs-plain > .active > a, .nav-tabs-plain > .active > a:hover { + background-color: #fff; +} + +@media (max-width: 991px) { + .page-header .nav-tabs { + margin: 5px 10px 10px -5px; + border: none; + } + .page-header .nav-tabs > li { + float: none; + } + .page-header .nav-tabs > li a { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .page-header .nav-tabs > .active > a, + .page-header .nav-tabs > .active > a:hover, + .page-header .nav-tabs > .active > a:focus { + border-bottom-color: #dddddd; + } +} +h1 { + font-size: 32px; +} + +h2 { + font-size: 21px; +} + +h3 { + font-size: 18px; +} + +h4 { + font-size: 14px; +} + +h1, +h2, +h3, +h4 { + line-height: 1.5; +} +h1 small, +h2 small, +h3 small, +h4 small { + font-size: 14px; +} + +.prose h1, +.prose heading-1 h2, +.prose heading-2 { + margin-bottom: 15px; +} +.prose h3, +.prose heading-3 { + margin-bottom: 10px; +} + +.table-chunky td, +.table-chunky th { + padding: 12px 15px; + font-size: 12px; +} + +.table-chunky thead th, +.table-chunky thead td { + color: #fff; + background-color: #aaa; + padding-top: 10px; + padding-bottom: 10px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: transparent; +} +.table-striped tbody tr:nth-child(even) td, +.table-striped tbody tr:nth-child(even) th { + background-color: #f2f2f2; +} + +.table-chunky.table-bordered { + border-radius: 2px; +} +.table-chunky.table-bordered thead:first-child tr:first-child th:first-child, +.table-chunky.table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 2px; + -moz-border-radius-topleft: 2px; + border-top-left-radius: 2px; +} +.table-chunky.table-bordered thead:first-child tr:first-child th:last-child, +.table-chunky.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 2px; + -moz-border-radius-topright: 2px; + border-top-right-radius: 2px; +} +.table-chunky.table-bordered thead:last-child tr:last-child th:first-child, +.table-chunky.table-bordered tbody:last-child tr:last-child td:first-child { + border-radius: 0 0 0 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + border-bottom-left-radius: 2px; +} +.table-chunky.table-bordered thead:last-child tr:last-child th:last-child, +.table-chunky.table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 2px; + -moz-border-radius-bottomright: 2px; + border-bottom-right-radius: 2px; +} + +.ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ckan-icon-fb { + width: 16px; + height: 16px; + background-position: 0px 0; +} + +.ckan-icon-gplus { + width: 16px; + height: 16px; + background-position: 16px 0; +} + +.ckan-icon-twitter { + width: 16px; + height: 16px; + background-position: 32px 0; +} + +.ckan-icon-email { + width: 16px; + height: 16px; + background-position: 48px 0; +} + +.ckan-icon-share { + width: 16px; + height: 16px; + background-position: 64px 0; +} + +.ckan-icon-feed { + width: 16px; + height: 16px; + background-position: 80px 0; +} + +.ckan-icon-calendar { + width: 16px; + height: 16px; + background-position: 96px 0; +} + +.ckan-icon-file { + width: 16px; + height: 16px; + background-position: 112px 0; +} + +.ckan-icon-lock { + width: 16px; + height: 16px; + background-position: 128px 0; +} + +.ckan-icon-link-file { + width: 16px; + height: 16px; + background-position: 144px 0; +} + +.ckan-icon-link-plugin { + width: 16px; + height: 16px; + background-position: 160px 0; +} + +.ckan-icon-upload-file { + width: 16px; + height: 16px; + background-position: 176px 0; +} + +.ckan-icon-callout { + width: 16px; + height: 16px; + background-position: 192px 0; +} + +.ckan-icon-circle-cross, .nav-facet .nav-item.active > a:hover:after, .nav-facet .nav-item.active > a:after, .nav-facet-tertiary .nav li.active > a:hover:after, +.nav-facet-tertiary .nav li.active > a:after { + width: 17px; + height: 17px; + background-position: 0px -17px; +} + +.ckan-icon-circle-add, .nav-facet .nav-item > a:hover:after { + width: 17px; + height: 17px; + background-position: -17px -17px; +} + +.ckan-icon-flame { + width: 17px; + height: 17px; + background-position: -34px -17px; +} + +.ckan-icon-search { + width: 17px; + height: 17px; + background-position: -51px -17px; +} + +.ckan-icon-large-lock { + width: 20px; + height: 20px; + background-position: 0px -33px; +} + +.ckan-icon-photo { + width: 20px; + height: 20px; + background-position: -20px -33px; +} + +.ckan-icon-add { + width: 20px; + height: 20px; + background-position: -40px -33px; +} + +.ckan-icon-home { + width: 20px; + height: 20px; + background-position: -60px -33px; +} + +.ckan-icon-rewind { + width: 20px; + height: 20px; + background-position: -80px -33px; +} + +.ckan-icon-tools { + width: 20px; + height: 20px; + background-position: -100px -33px; +} + +.ckan-icon-flag { + width: 20px; + height: 20px; + background-position: -120px -33px; +} + +.ckan-icon-clipboard { + width: 20px; + height: 20px; + background-position: -140px -33px; +} + +.ckan-icon-share { + width: 20px; + height: 20px; + background-position: -160px -33px; +} + +.ckan-icon-info { + width: 20px; + height: 20px; + background-position: -180px -33px; +} + +.ckan-icon-download { + width: 20px; + height: 20px; + background-position: -200px -33px; +} + +.ckan-icon-star { + width: 20px; + height: 20px; + background-position: -220px -33px; +} + +.ckan-icon-info-flat { + width: 20px; + height: 20px; + background-position: -240px -33px; +} + +.ckan-icon-tag { + width: 20px; + height: 20px; + background-position: -260px -33px; +} + +.ckan-icon-plus { + width: 20px; + height: 20px; + background-position: -280px -33px; + width: 16px; +} + +.ckan-icon-head { + width: 20px; + height: 20px; + background-position: -300px -33px; +} + +.ckan-icon-arrow-e { + width: 20px; + height: 20px; + background-position: -320px -33px; + width: 16px; +} + +.ckan-icon-bookmark { + width: 25px; + height: 25px; + background-position: 0px -53px; +} + +.format-label { + text-indent: -900em; + background: url("../../../base/images/sprite-resource-icons.png") no-repeat 0 0; +} + +.format-label { + width: 60px; + height: 65px; + background-position: -1720px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=html], +.format-label[data-format*=html] { + width: 60px; + height: 65px; + background-position: -120px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=json], +.format-label[data-format*=json] { + width: 60px; + height: 65px; + background-position: -220px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=xml], +.format-label[data-format*=xml] { + width: 60px; + height: 65px; + background-position: -320px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=txt], +.format-label[data-format*=txt] { + width: 60px; + height: 65px; + background-position: -420px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=doc], +.format-label[data-format*=doc], +.format-label[data-format=docx], +.format-label[data-format*=docx] { + width: 60px; + height: 65px; + background-position: -520px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=odt], +.format-label[data-format*=odt] { + width: 60px; + height: 65px; + background-position: -620px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=csv], +.format-label[data-format*=csv] { + width: 60px; + height: 65px; + background-position: -720px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=xls], +.format-label[data-format*=xls] { + width: 60px; + height: 65px; + background-position: -820px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=zip], +.format-label[data-format*=zip] { + width: 60px; + height: 65px; + background-position: -920px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=api], +.format-label[data-format*=api] { + width: 60px; + height: 65px; + background-position: -1020px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=pdf], +.format-label[data-format*=pdf] { + width: 60px; + height: 65px; + background-position: -1120px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=rdf], +.format-label[data-format*=rdf] { + width: 60px; + height: 65px; + background-position: -1220px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=wms], +.format-label[data-format*=wms] { + width: 60px; + height: 65px; + background-position: -1320px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=png], +.format-label[data-format*=png] { + width: 60px; + height: 65px; + background-position: -1420px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=jpg], +.format-label[data-format*=jpg], +.format-label[data-format=jpeg], +.format-label[data-format*=jpeg] { + width: 60px; + height: 65px; + background-position: -1520px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=gif], +.format-label[data-format*=gif] { + width: 60px; + height: 65px; + background-position: -1620px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=wfs], +.format-label[data-format*=wfs] { + width: 60px; + height: 65px; + background-position: -1820px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=gml], +.format-label[data-format*=gml] { + width: 60px; + height: 65px; + background-position: -1920px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=wmts], +.format-label[data-format*=wmts] { + width: 60px; + height: 65px; + background-position: -2020px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=kml], +.format-label[data-format*=kml] { + width: 60px; + height: 65px; + background-position: -2120px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +.format-label[data-format=geo], +.format-label[data-format*=geo] { + width: 60px; + height: 65px; + background-position: -2220px -220px; + transform: scale(0.53); + margin: -14px 0 0 -14px; +} + +[class^=icon-], +[class*=" icon-"] { + display: inline-block; + text-align: right; + font-size: 14px; + line-height: 1; + width: 14px; +} + +.btn [class^=icon-], +.btn [class*=" icon-"], +.nav [class^=icon-], +.nav [class*=" icon-"], +.module-heading [class^=icon-], +.module-heading [class*=" icon-"], +.dropdown [class^=icon-], +.dropdown [class*=" icon-"] { + margin-right: 4px; +} + +.info-block [class^=icon-], +.info-block [class*=" icon-"] { + float: left; + font-size: 28px; + width: 28px; + margin-right: 5px; + margin-top: 2px; +} + +.breadcrumb .home .icon-home { + font-size: 24px; + width: 24px; + vertical-align: -1px; +} + +.info-block-small [class^=icon-], +.info-block-small [class*=" icon-"] { + font-size: 14px; + width: 14px; + margin-top: 1px; +} + +.nav-tabs .fa:last-child, +.module-heading .fa:last-child, +.btn .fa:last-child { + margin-right: 3px; +} + +.wrapper { + position: relative; + min-height: 300px; + background-color: #fff; +} +.wrapper:before, .wrapper:after { + display: table; + content: " "; +} +.wrapper:after { + clear: both; +} +@media (min-width: 768px) { + .wrapper:before { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 25%; + border-right: 1px solid #ddd; + z-index: 1; + } + .wrapper.no-nav:before { + display: none; + } + .wrapper.no-nav .module > .page-header { + margin-top: 0; + } +} + +[role=main], +.main { + position: relative; + padding-bottom: 20px; +} + +@media (min-width: 768px) { + .main { + padding-top: 10px; + background: #eee url("../../../base/images/bg.png"); + } +} +[role=main], +.main { + min-height: 350px; +} + +.main:after, +[role=main]:after { + bottom: 0; + border-top-width: 1px; +} + +.main .primary { + position: relative; + float: right; + margin-left: 0; +} + +.main .secondary { + padding: 0; + z-index: 1; + padding-right: 1px; +} + +/* Filters modal */ +.no-text .text { + display: none; +} + +.js body.filters-modal { + overflow: hidden; +} + +.show-filters.btn, +.hide-filters { + display: none; +} + +@media (max-width: 767px) { + .wrapper { + border-width: 0; + -webkit-box-shadow: 0; + box-shadow: 0; + border-radius: 0; + } + .js .main .secondary .filters { + display: none; + position: fixed; + overflow: auto; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + padding: 10px; + background-color: rgb(0, 0, 0); + background-color: rgba(0, 0, 0, 0.5); + } + .js body.filters-modal .secondary .filters { + display: block; + } + .js .main .secondary .filters > div { + background-color: #fff; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + overflow: hidden; + } + .js .main .secondary .filters > div .module-footer { + display: none; + } + .js body.filters-modal .secondary .filters .hide-filters { + display: inline-block; + position: absolute; + top: 14px; + right: 17px; + opacity: 0.6; + } + .js body.filters-modal .secondary .filters .hide-filters i { + font-size: 18px; + } + .js .show-filters.btn { + display: inline-block; + } +} +.primary .primary { + float: left; + margin-left: 0; + margin-bottom: 20px; +} +.primary .primary h1:first-child, +.primary .primary h2:first-child, +.primary .primary h3:first-child, +.primary .primary h4:first-child { + margin-top: 0; +} +.primary .tertiary { + margin-bottom: 20px; +} + +.context-info .module-content { + padding: 15px; +} +.context-info .image { + margin-bottom: 10px; +} +.context-info .image img, +.context-info .image a { + display: block; + width: 100%; + height: 100%; + border-radius: 4px; +} +.context-info .description { + word-wrap: break-word; + word-break: break-all; + overflow: auto; +} +.context-info code { + display: block; + font-weight: normal; + padding: 0; + margin: 0; + overflow: auto; +} +.context-info h1.heading { + margin: 0 0 5px 0; + font-size: 18px; + line-height: 1.3; + -ms-word-break: break-all; + word-break: break-all; + /* Non standard for webkit */ + word-break: break-word; + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; +} +.context-info .info { + margin-top: 15px; + padding-top: 10px; + border-top: 1px dotted #DDD; + word-break: break-word; +} +.context-info .info dl dd { + margin-top: 3px; + margin-left: 0; +} +.context-info .nums { + margin-top: 15px; + padding-top: 10px; + padding-bottom: 0; + border-top: 1px dotted #DDD; +} +.context-info .nums:before, .context-info .nums:after { + display: table; + content: " "; +} +.context-info .nums:after { + clear: both; +} +.context-info .nums dl { + float: left; + width: 50%; + margin: 5px 0 0 0; + color: #444; +} +.context-info .nums dl dt { + display: block; + font-size: 13px; + font-weight: 300; +} +.context-info .nums dl dd { + display: block; + font-size: 30px; + font-weight: 700; + line-height: 36px; + margin-left: 0; +} +.context-info .nums dl dd .smallest { + font-size: 13px; +} +.context-info .nums dl dd .smaller { + font-size: 16px; +} +.context-info .nums dl dd .small { + font-size: 21px; +} +.context-info .follow_button { + margin: 15px 0; +} +.context-info.editing .module-content { + margin-top: 0; +} + +.flash-messages .alert { + -webkit-box-shadow: 0 0 0 1px white; + box-shadow: 0 0 0 1px white; +} + +.view-preview-container { + margin-top: 20px; +} + +.homepage .btn { + padding: 15px 30px; +} +.homepage .hero { + min-height: 505px; + background: url("../../../base/images/hero.png"); + background-repeat: no-repeat; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + display: flex; + align-items: center; +} +.homepage .hero .wrap { + display: flex; + justify-content: center; +} +.homepage .hero .wrap .search-form { + width: 60%; + border: 0; +} +.homepage .hero .wrap .search-form button { + background-color: #05011f; + top: 0; + right: 0; + margin-top: 0; + padding: 28px 15px; + display: flex; + align-items: center; +} +.homepage .newsletter { + background: #05011f; + color: #fff; + padding: 78px 0px; +} +.homepage .newsletter .wrap { + display: flex; + align-items: center; + justify-content: space-between; +} +.homepage .newsletter .wrap div:nth-child(2) { + width: 40%; +} +.homepage .newsletter .wrap div h5 { + font-size: 1.375em; +} +.homepage .newsletter .wrap div h1, +.homepage .newsletter .wrap div h5, +.homepage .newsletter .wrap div p { + font-weight: 300; +} +.homepage .stats { + background: #fff; + padding: 60px 0px; +} +.homepage .stats .wrap .row { + display: flex; + justify-content: space-between; + align-items: center; +} +.homepage .stats .stat-number { + font-size: 42px; + font-weight: 600; + margin: 0; + color: #000000; +} +.homepage .stats .stat-label { + text-transform: uppercase; + font-size: 16px; + font-weight: 700; +} +.homepage .stats .title { + border-right: 1px solid #cccccc; + padding-right: 20px; +} +.homepage .stats .title h4 { + font-weight: 700; + font-size: 16px; + padding: 0; + margin: 0; + text-align: right; +} +.homepage .popular-dataset { + background-image: url("../../../base/images/popular-dataset-bg.png"); + background-repeat: no-repeat; + background-position: 0 30px; + background-color: #edeced; +} +.homepage .popular-dataset .col-md-4:nth-child(1) .icon { + background: #bfd22b; +} +.homepage .popular-dataset .col-md-4:nth-child(1) .item { + border-color: #bfd22b; +} +.homepage .popular-dataset .col-md-4:nth-child(2) .icon { + background: #8869ae; +} +.homepage .popular-dataset .col-md-4:nth-child(2) .item { + border-color: #8869ae; +} +.homepage .popular-dataset .col-md-4:nth-child(3) .icon { + background: #00b3dc; +} +.homepage .popular-dataset .col-md-4:nth-child(3) .item { + border-color: #00b3dc; +} +.homepage .popular-dataset .title { + display: flex; + justify-content: center; + position: relative; + font-weight: 700; + font-size: 23px; + color: #000000; + text-transform: uppercase; + padding-top: 70px; + padding-bottom: 70px; +} +.homepage .popular-dataset .title h3 { + font-size: 23px; +} +.homepage .popular-dataset .icon { + position: absolute; + top: -25px; + left: 30px; + background: #bfd22b; + padding: 10px; + border-radius: 50%; + height: 50px; + width: 50px; + display: flex; + justify-content: center; +} +.homepage .popular-dataset .icon img { + color: #fff; + width: 20px; +} +.homepage .popular-dataset .item { + font-weight: 400; + font-size: 16px; + background: #fff; + border-top: 3px solid; + padding: 30px; + border-color: #8869ae; +} +.homepage .popular-dataset .item a { + color: #02152b; + font-size: 24px; + padding-bottom: 11px; +} +.homepage .popular-dataset .item p { + padding-top: 12px; +} +.homepage .popular-dataset .more { + text-align: center; + padding: 30px; +} +.homepage .popular-dataset .more a { + color: #000000; + font-size: 23px; + padding-bottom: 11px; +} +.homepage .themes .title { + display: flex; + justify-content: center; + position: relative; + font-weight: 700; + color: #000000; + text-transform: uppercase; + padding-top: 70px; + padding-bottom: 50px; +} +.homepage .themes .title h3 { + font-size: 23px; +} +.homepage .themes .col { + padding: 10px; +} +.homepage .themes .col .item { + padding: 20px 20px 20px 0; + background: #edeced; +} +.homepage .themes .col .item .media .btn-primary { + border: 2px solid #f37021; + box-shadow: -2px 2px 2px rgba(0, 0, 0, 0.2); + border-radius: 5px; +} +.homepage .themes .col .item .media .count { + font-weight: 700; + font-size: 16px; + text-transform: uppercase; + position: absolute; + left: 10px; + top: 10px; + background-color: rgba(54, 2, 51, 0.7); + color: #fff; + padding: 4px 10px; + border-radius: 5px; +} +.homepage .themes .col .item .media img { + width: 180px; +} +.homepage .themes .col:nth-child(-n+3) .item { + padding: 20px 0px 20px 20px; +} +.homepage .themes .col:nth-child(-n+3) .item .media .count { + position: absolute; + right: 10px; + background-color: rgba(54, 2, 51, 0.7); + top: 10px; + left: unset; + color: #fff; + padding: 4px 10px; + border-radius: 5px; +} +.homepage .themes .col:nth-child(-n+3) .item .media .count img { + width: 180px; +} +.homepage .themes .more { + text-align: center; + padding: 30px; +} +.homepage .themes .more a { + color: #000000; + font-size: 23px; + padding-bottom: 11px; +} +.homepage .providers { + background: #00162c; +} +.homepage .providers h2 { + color: #fff; + text-align: center; + padding: 30px 0; + font-weight: 700; + font-size: 23px; +} +.homepage .providers .logo-grid { + display: flex; + flex-wrap: wrap; + align-items: center; + align-content: center; +} +.homepage .providers .logo-grid__item { + padding: 15px; + width: 180px; + margin: 0 auto; + text-align: center; +} +.homepage .providers .logo-grid__item img { + filter: grayscale(100%) contrast(0.3); + max-width: 100%; +} +.homepage .providers .logo-grid__item img:hover { + filter: grayscale(0%) contrast(1); +} +.homepage .providers .more { + text-align: center; + padding: 30px; +} +.homepage .providers .more a { + color: #fff; + font-size: 23px; + padding-bottom: 11px; +} +.homepage .features { + font-size: 16px; + padding: 55px 0; +} +.homepage .features h4 { + font-weight: 600; + font-size: 18px; + color: #000000; +} +.homepage .funding { + border-top: 1px solid #edeced; + padding: 42px 0; +} +.homepage .funding h4 { + font-weight: 700; + font-size: 16px; + padding-right: 80px; + border-right: 1px solid #cccccc; +} +.homepage .funding .wrap { + margin: auto; + display: flex; + justify-content: center; +} +.homepage .funding .logo-grid { + padding-left: 40px; + display: flex; +} +.homepage .funding .logo-grid__item { + padding-right: 20px; + width: 245px; + margin: 0 auto; + text-align: center; +} +.homepage .funding .logo-grid__item img { + max-width: 100%; +} + +@media (max-width: 992px) { + .homepage .hero .container { + width: 100%; + } + .homepage .newsletter .wrap { + flex-direction: column; + } + .homepage .newsletter .wrap div:nth-child(2) { + width: 80%; + text-align: center; + margin-bottom: 20px; + } + .homepage .stats .stat-number { + font-size: 20px; + } + .homepage .stats .stat-label { + font-size: 14px; + } + .homepage .popular-dataset .col-md-4 { + margin-bottom: 60px; + } + .homepage .popular-dataset .col-md-4 .icon { + left: 43%; + } + .homepage .features .col-md-4 { + margin-bottom: 20px; + } + .homepage .funding .logo-grid { + flex-direction: column; + } + .homepage .funding .logo-grid img { + padding: 10px; + } +} +@media (max-width: 768px) { + .homepage .hero .wrap .search-form { + width: 100%; + } +} +.account-masthead { + min-height: 30px; + color: #fff; + background: black url("../../../base/images/bg.png"); +} +.account-masthead .account { + float: right; +} +.account-masthead .account ul li { + display: block; + float: left; + border-left: 1px solid black; +} +.account-masthead .account ul li a { + display: block; + color: #bfbfbf; + font-size: 13px; + font-weight: bold; + padding: 0 10px; + line-height: 31px; +} +.account-masthead .account ul li a span.username, +.account-masthead .account ul li a span.text { + margin: 0 2px 0 4px; +} +.account-masthead .account ul li a span.text { + position: absolute; + top: -9999px; + left: -9999px; +} +.account-masthead .account ul li a:hover { + color: #d9d9d9; + background-color: black; + text-decoration: none; +} +.account-masthead .account ul li a.sub { + font-weight: 300; +} +.account-masthead .account ul li a .btn { + vertical-align: 1px; + margin-left: 3px; +} +.account-masthead .account .notifications a span.badge { + font-size: 12px; + margin-left: 3px; + padding: 1px 6px; + background-color: black; + border-radius: 4px; + text-shadow: none; + color: #bfbfbf; +} +.account-masthead .account .notifications a:hover span { + color: #fff; + background-color: black; +} +.account-masthead .account .notifications.notifications-important a span.badge { + color: #fff; + background-color: #c9403a; +} +.account-masthead .account.authed .image { + padding: 0 6px; +} +.account-masthead .account.authed .image img { + border-radius: 4px; +} + +.masthead { + margin-bottom: initial; + padding: 10px 0; + color: #fff; + background: #000000 url("../../../base/images/bg.png"); +} +.masthead:before, .masthead:after { + display: table; + content: " "; +} +.masthead:after { + clear: both; +} +.masthead .container { + position: relative; +} +.masthead a { + color: #fff; +} +.masthead hgroup h1, +.masthead hgroup h2 { + float: left; + font-size: 30px; + line-height: 1.5; +} +.masthead hgroup h1 { + font-weight: 900; + letter-spacing: -1px; + margin: 3px 0; +} +.masthead hgroup h2 { + position: absolute; + bottom: -3px; + left: 0; + margin: 0; + font-size: 15px; + font-weight: normal; + line-height: 1.2; + white-space: nowrap; +} +.masthead .logo-container { + background: rgba(54, 2, 51, 0.7); + position: absolute; + border-radius: 100%; + top: -140px; + display: flex; + align-items: center; + justify-content: center; + min-width: 319px; + min-height: 320px; +} +.masthead .logo-container .logo { + display: inline-block; + margin-top: 60px; +} +.masthead .logo-container .logo img { + max-height: 130px; +} +.masthead .small-logo { + min-width: 230px; + min-height: 230px; +} +.masthead .small-logo .logo { + margin-top: 80px !important; +} +.masthead .small-logo .logo img { + max-height: 85px !important; +} +.masthead .navbar-collapse { + padding: 10px 0; +} +.masthead .navbar-collapse .nav li a { + color: #fff !important; + position: relative; +} +.masthead .navbar-collapse .nav li a:before { + transition: 300ms; + height: 4px; + content: ""; + position: absolute; + background-color: #f37021; + width: 75%; + bottom: 0px; + opacity: 0; +} +.masthead .navbar-collapse .nav li a:hover:before { + bottom: 0px; + opacity: 1; +} +.masthead .section { + float: left; +} +@media (min-width: 768px) and (max-width: 991px) { + .masthead .navigation.section { + float: right; + } +} +.masthead .navigation .nav-pills { + margin-bottom: 0; +} +.masthead .navigation .nav-pills li a:hover, +.masthead .navigation .nav-pills li a:focus, .masthead .navigation .nav-pills li.active a { + background-color: black; +} +.masthead .nav > li > a, +.masthead .nav > li > a:focus, +.masthead .nav > li > a:hover, +.masthead .nav > .active > a, +.masthead .nav > .active > a:hover, +.masthead .nav > .active > a:focus { + color: #fff; + text-shadow: none; +} +.masthead .site-search { + margin: 4px 8px 4px 0; +} +@media (min-width: 992px) { + .masthead .site-search { + margin-left: 15px; + } +} +.masthead .site-search input { + width: 40px; + opacity: 0; + padding: 5px 10px; + -webkit-transition: width 0.4s ease-in-out; + transition: width 0.4s ease-in-out; +} +.masthead .site-search input ~ .btn-search { + pointer-events: none; + cursor: default; +} +.masthead .site-search input:focus { + width: 200px; + opacity: 1; +} +.masthead .site-search input:focus ~ .btn-search { + pointer-events: all !important; +} +.masthead .btn-navbar-btn, +.masthead .btn-navbar-btn:hover, +.masthead .btn-navbar-btn:focus, +.masthead .btn-navbar-btn:active, +.masthead .btn-navbar-btn.active, +.masthead .btn-navbar-btn.disabled, +.masthead .btn-navbar-btn[disabled] { + background-color: black; + background-image: none; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + text-shadow: none; + margin-top: 15px; +} +.masthead .btn-navbar-btn .icon-bar, +.masthead .btn-navbar-btn:hover .icon-bar, +.masthead .btn-navbar-btn:focus .icon-bar, +.masthead .btn-navbar-btn:active .icon-bar, +.masthead .btn-navbar-btn.active .icon-bar, +.masthead .btn-navbar-btn.disabled .icon-bar, +.masthead .btn-navbar-btn[disabled] .icon-bar { + margin-right: 0; +} +.masthead .debug { + position: absolute; + top: 37px; + left: 10px; + color: rgba(255, 255, 255, 0.5); +} + +@media (min-width: 992px) { + .masthead .navbar-collapse { + float: right; + } +} +@media (max-width: 991px) { + .navbar-toggle { + margin-right: 0; + } + .masthead .section { + float: none; + } + .masthead .section .navbar-collapse { + margin-bottom: 25px; + } + .masthead .container { + padding-left: 15px; + padding-right: 15px; + } + .masthead .site-search { + display: none; + } + .masthead .logo-container { + background: rgba(54, 2, 51, 0.7); + position: absolute; + border-radius: 100%; + top: -80px; + display: flex; + align-items: center; + justify-content: center; + min-width: 200px; + min-height: 200px; + } + .masthead .logo-container .logo { + display: inline-block; + margin-top: 20px; + } + .masthead .logo-container .logo img { + max-height: 100px; + } +} +@media (max-width: 767px) { + .masthead .navbar-collapse { + clear: both; + margin-left: 0; + margin-right: 0; + } +} +.site-footer { + padding: 20px 0; + background: #fff; +} + +.site-footer__links { + display: flex; + color: #CCDEE3; +} +.site-footer__col-2 { + display: flex; + flex-direction: column; + width: calc(20px + (100% - 220px) / 12 * 2); + margin-right: 20px; + position: relative; +} +.site-footer__col-2 h4 { + font-size: 1.375em; + color: #F37021; + font-weight: 200; + padding: 0; + margin: 0; +} +.site-footer__col-2:nth-child(5) { + width: calc(40px + (100% - 220px) / 12 * 3); + margin-right: 20px; + position: relative; +} +.site-footer__col-2:nth-child(6) { + margin-right: 0; + width: calc((100% - 220px) / 12 * 1); + margin-right: 20px; + position: relative; +} +.site-footer__col-2 ul { + list-style: none; + margin: 0; + padding: 20px 0 0; +} +.site-footer__col-2 ul li a { + display: block; + margin: 20px 0 0; + text-decoration: none; + color: #02152b; + text-transform: uppercase; + font-weight: 700; +} +.site-footer__col-2 ul li a:hover { + color: #F37021; +} +.site-footer__col-2 .social { + display: block; + width: 105px; +} +.site-footer__col-2 .social h4 { + padding-bottom: 40px; +} +.site-footer__col-2 .social .icon { + float: left; + padding-left: 2px; + padding-bottom: 2px; +} +.site-footer__col-2 .social .icon i { + border: 3px solid #c1c6c8; + border-radius: 100%; + padding: 14px; + height: 50px; + width: 50px; + font-size: 18px; + color: #7c878d; +} +.site-footer__col-2 .social .icon:hover i { + border-color: #F37021; + color: #F37021; +} +.site-footer__social { + display: none; +} + +.footer-links h4 { + font-size: 1.375em; + font-weight: 300; + color: #F37021; +} +.footer-links h4 .social-icon { + border: 3px solid #c1c6c8; + border-radius: 100%; + padding: 10px; + display: inline-block; + width: 50px; + height: 50px; + position: relative; +} + +.site-footer__bottom { + border-top: 1px solid #edeced; + margin-top: 15px; + padding: 30px 0px; + font-weight: 700; + text-transform: uppercase; + font-size: 14px; +} +.site-footer__bottom .warp { + display: flex; + justify-content: space-between; + align-items: center; +} +.site-footer__bottom ul { + list-style: none; + margin: 0; + padding: 0; +} +.site-footer__bottom ul li { + display: inline-block; +} +.site-footer__bottom ul li a { + color: #7c878d; + text-decoration: none; +} +.site-footer__bottom ul li a:hover { + color: #F37021; +} +.site-footer__bottom ul li::after { + content: "|"; + margin: 0 4px; + font-weight: 300; +} +.site-footer__bottom ul li:last-child::after { + content: ""; + margin: 0; +} +.site-footer__bottom .attribution { + padding-top: 20px; + display: flex; + justify-content: space-between; +} + +@media (max-width: 768px) { + .site-footer { + all: unset; + } + .site-footer .container { + display: flex; + justify-content: center; + } + .site-footer__links { + display: none; + } + .site-footer__social { + display: block; + text-align: center; + padding: 20px 0; + } + .site-footer__social h4 { + font-size: 1.375em; + color: #F37021; + font-weight: 200; + padding: 10px 0; + margin: 0; + } + .site-footer__social .icon { + float: left; + padding-left: 2px; + padding-bottom: 2px; + } + .site-footer__social .icon i { + border: 3px solid #c1c6c8; + border-radius: 100%; + padding: 14px; + height: 50px; + width: 50px; + font-size: 18px; + color: #7c878d; + } + .site-footer__social .icon:hover i { + border-color: #F37021; + color: #F37021; + } + .site-footer__bottom .warp { + display: flex; + align-items: center; + flex-direction: column; + } +} +.table-selected td { + background-color: #fff; +} +.table-selected td .edit { + display: block; +} + +.table-bulk-edit th input { + top: -5px; +} +.table-bulk-edit .table-actions .btn-group { + float: left; + margin: 0 10px 0 0; +} +.table-bulk-edit .context p { + margin-bottom: 0; +} + +.table-header thead th { + background-color: #f6f6f6; +} + +.table-edit-hover .edit { + display: none; + float: right; +} +.table-edit-hover tr:hover .edit { + display: block; +} + +.js .table-toggle-more .toggle-more { + display: none; +} +.js .table-toggle-more .show-more { + display: inline; +} +.js .table-toggle-more .show-less { + display: none; +} +.js .table-toggle-more .toggle-seperator { + display: table-row; +} +.js .table-toggle-more .toggle-seperator td { + height: 11px; + padding: 0; + background-image: url("../../../base/images/table-seperator.png"); +} +.js .table .toggle-show td { + background: none; + text-align: center; +} +.js .table-toggle-less .show-less { + display: inline; +} +.js .table-toggle-less .show-more { + display: none; +} +.js .table-toggle-less .toggle-seperator { + display: none; +} + +.profile .empty, +.profile .dataset-list { + margin-bottom: 20px; +} + +.activity { + padding: 0; + list-style-type: none; + background: transparent url("../../../base/images/dotted.png") 14px 0 repeat-y; +} +.activity .item { + position: relative; + margin: 0 0 15px 0; + padding: 0; +} +.activity .item:before, .activity .item:after { + display: table; + content: " "; +} +.activity .item:after { + clear: both; +} +.activity .item .icon { + display: block; + position: absolute; + top: 0; + left: 0; + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + color: #FFFFFF; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + font-weight: normal; + margin-right: 10px; + border-radius: 100px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2); +} +.activity .item .user-image { + border-radius: 100px; +} +.activity .item .actor .user-image { + position: absolute; + top: 0; + left: 40px; +} +.activity .item p { + font-size: 14px; + line-height: 1.5; + margin: 5px 0 0 80px; +} +.activity .item .date { + color: #999; + font-size: 12px; + white-space: nowrap; +} +.activity .item .new { + display: block; + position: absolute; + overflow: hidden; + top: -3px; + left: -3px; + width: 10px; + height: 10px; + background-color: #A35647; + border: 1px solid #FFF; + text-indent: -1000px; + border-radius: 100px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} +.activity .item.no-avatar p { + margin-left: 40px; +} +.activity .load-less { + margin-bottom: 15px; +} + +.popover { + width: 300px; +} +.popover .popover-title { + font-weight: bold; + margin-bottom: 0; +} +.popover p.about { + margin: 0 0 10px 0; +} +.popover .popover-close { + float: right; + text-decoration: none; +} +.popover .popover-content { + font-size: 14px; + line-height: 1.428571429; + color: #444; + word-break: break-all; +} +.popover .popover-content dl { + margin: 0; +} +.popover .popover-content dl dd { + margin-left: 0; + margin-bottom: 10px; +} + +.activity .item.icon { + background-color: #333; +} +.activity .item.failure .icon { + background-color: #B95252; +} +.activity .item.success .icon { + background-color: #69A67A; +} +.activity .item.added-tag .icon { + background-color: #6995a6; +} +.activity .item.changed-group .icon { + background-color: #767DCE; +} +.activity .item.changed-package .icon { + background-color: #8c76ce; +} +.activity .item.changed-package_extra .icon { + background-color: #769ace; +} +.activity .item.changed-resource .icon { + background-color: #aa76ce; +} +.activity .item.changed-user .icon { + background-color: #76b8ce; +} +.activity .item.changed-organization .icon { + background-color: #699fa6; +} +.activity .item.deleted-group .icon { + background-color: #B95252; +} +.activity .item.deleted-package .icon { + background-color: #b97452; +} +.activity .item.deleted-package_extra .icon { + background-color: #b95274; +} +.activity .item.deleted-resource .icon { + background-color: #b99752; +} +.activity .item.deleted-organization .icon { + background-color: #b95297; +} +.activity .item.new-group .icon { + background-color: #69A67A; +} +.activity .item.new-package .icon { + background-color: #69a68e; +} +.activity .item.new-package_extra .icon { + background-color: #6ca669; +} +.activity .item.new-resource .icon { + background-color: #81a669; +} +.activity .item.new-user .icon { + background-color: #69a6a3; +} +.activity .item.new-organization .icon { + background-color: #81a669; +} +.activity .item.removed-tag .icon { + background-color: #b95297; +} +.activity .item.deleted-related-item .icon { + background-color: #b9b952; +} +.activity .item.follow-dataset .icon { + background-color: #767DCE; +} +.activity .item.follow-user .icon { + background-color: #8c76ce; +} +.activity .item.new-related-item .icon { + background-color: #95a669; +} +.activity .item.follow-group .icon { + background-color: #8ba669; +} + +.select-time { + width: 250px; + display: inline; +} + +br.line-height2 { + line-height: 2; +} + +.dropdown:hover .dropdown-menu { + display: block; +} + +.js .dropdown .dropdown-menu, .js .dropdown:hover .dropdown-menu { + display: none; +} +.js .dropdown.open .dropdown-menu { + display: block; +} + +#followee-filter .btn:before, #followee-filter .btn:after { + display: table; + content: " "; +} +#followee-filter .btn:after { + clear: both; +} +#followee-filter .btn span, +#followee-filter .btn strong { + line-height: 1.5; +} +#followee-filter .btn span { + font-weight: normal; +} +#followee-filter .btn strong { + margin: 0 5px; + white-space: nowrap; + max-width: 90px; + overflow: hidden; + text-overflow: ellipsis; +} + +.dashboard-context { + position: relative; + margin-bottom: 20px; + padding: 20px; + border-bottom: 1px solid #DCDCDC; + background-color: #f6f6f6; + border-radius: 3px 0 0 0; +} +.dashboard-context h2 { + margin-bottom: 10px; +} +.dashboard-context .arrow { + position: absolute; + content: " "; + top: 30px; + right: -10px; + width: 10px; + height: 21px; + background: transparent url("${imagePath}/dashboard-followee-related.png"); +} + +.popover-followee .popover-title { + display: none; +} +.popover-followee .popover-content { + padding: 0; + border-radius: 3px; +} +.popover-followee .empty { + padding: 10px; +} +.popover-followee .popover-header { + background-color: whiteSmoke; + padding: 5px; + border-bottom: 1px solid #ccc; + border-radius: 3px 3px 0 0; +} +.popover-followee .popover-header:before, .popover-followee .popover-header:after { + display: table; + content: " "; +} +.popover-followee .popover-header:after { + clear: both; +} +.popover-followee .popover-header .input-group { + margin-bottom: 0; +} +.popover-followee .popover-header .input-group-addon, +.popover-followee .popover-header input { + margin: 0; +} +.popover-followee .popover-header .input-group-addon { + padding: 4px 8px 4px 12px; + border-right-width: 0; + border-radius: 100px 0 0 100px; +} +.popover-followee .popover-header input { + padding: 4px 12px 4px 8px; + font-size: 13px; + width: 227px; + border-radius: 0 100px 100px 0; +} +.popover-followee .nav { + padding: 0; + margin: 0; + max-height: 205px; + overflow: auto; + border-radius: 0 0 3px 3px; +} +.popover-followee .nav li { + float: none; +} +.popover-followee .nav li a { + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: 7px 10px 7px 15px; + margin: 0; + border-radius: 0; +} +.popover-followee .nav li a i { + background-color: #F37021; + color: #fff; + margin-right: 11px; + padding: 3px 5px; + line-height: 1; + border-radius: 100px; + -webkit-box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 2x rgba(0, 0, 0, 0.2); +} +.popover-followee .nav li a:hover i { + background-color: #000; +} +.popover-followee .nav li.active a i { + color: #F37021; + background-color: #fff; +} + +.dashboard-me { + padding: 15px 15px 0 15px; +} +.dashboard-me:before, .dashboard-me:after { + display: table; + content: " "; +} +.dashboard-me:after { + clear: both; +} +.dashboard-me img { + float: left; + margin-right: 10px; + border-radius: 100px; +} +.dashboard-me strong { + display: block; + font-size: 16px; + margin: 3px 0; +} + +.resource-view .actions { + right: 0; +} + +.resource-view-filters { + margin-bottom: 1em; +} +.resource-view-filters .resource-view-filter { + margin-bottom: 1em; +} +.resource-view-filters .resource-view-remove-filter { + cursor: pointer; + color: #b55457; +} +.resource-view-filters .resource-view-filter-values .select2-container { + margin-right: 0.3em; + margin-bottom: 0.2em; + width: 24% !important; +} +.resource-view-filters .resource-view-filter-values .select2-container .select2-search-choice-close { + left: auto; +} + +.resource-view-list.reordering { + margin: -10px -10px 0; +} +.resource-view-list.reordering li { + margin-bottom: 10px; + border-radius: 3px; + cursor: move; +} +.resource-view-list.reordering li a { + cursor: inherit; +} +.resource-view-list.reordering li .handle { + padding: 0; + display: block; + position: absolute; + color: #888; + left: -31px; + top: 50%; + margin-top: -15px; + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + border: 1px solid #ddd; + border-width: 1px 0 1px 1px; + background-color: #fff; + border-radius: 20px 0 0 20px; +} +.resource-view-list.reordering li .handle:hover { + text-decoration: none; +} +.resource-view-list.reordering li:hover .handle { + background-color: #eee; +} +.resource-view-list.reordering li.ui-sortable-helper { + background-color: #eee; + border: 1px solid #F37021; +} +.resource-view-list.reordering li.ui-sortable-helper .handle { + background-color: #eee; + border-color: #F37021; + color: #333; +} + +.resource-view-list > li > a { + border-radius: 0; +} +.resource-view-list li { + margin-bottom: -3px; + border: 1px solid #ddd; +} +.resource-view-list li:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.resource-view-list li:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.resource-view-list li .handle { + display: none; +} + +.view-preview-container .module-content { + position: relative; +} +.view-preview-container .actions { + right: 15px; +} + +.datapusher-status-link:hover { + text-decoration: none; +} + +.datapusher-status.status-unknown { + color: #bbb; +} +.datapusher-status.status-pending { + color: #FFCC00; +} +.datapusher-status.status-error { + color: red; +} +.datapusher-status.status-complete { + color: #009900; +} + +.datapusher-form { + margin-bottom: 20px; +} + +.alert-error { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-error hr { + border-top-color: #e4b9c0; +} +.alert-error .alert-link { + color: #843534; +} + +.input-group .form-control { + z-index: 0; +} + +.input-group-btn:last-child > .btn { + z-index: 0; +} + +body { + background: #fff; + font-size: 16px; + font-weight: 400; + color: #7c878d; +} + +[hidden] { + display: none; +} + +table { + table-layout: fixed; +} + +thead th { + vertical-align: top; +} + +td, +th { + word-wrap: break-word; +} + +table .metric { + width: 140px; +} + +code { + color: #000; + border: none; + background: none; + white-space: normal; +} + +pre { + border: none; + background: none; + padding-left: 0; + padding-right: 0; +} + +mark { + background: #fdf7e9; +} + +blockquote p { + font-size: 1em; +} + +iframe { + border: none; +} + +.btn { + border-radius: 5px; + text-transform: uppercase; + text-decoration: none; + text-align: center; + letter-spacing: 0.5px; + border: 2px solid #F37021; + outline: none; + font-size: 1em; + font-weight: bold; +} + +.btn-primary { + color: #fff; + transition: all 0.2s ease-in-out 0s; +} + +.embedded-content h1 { + font-size: 1.8em; +} + +.embedded-content h2 { + font-size: 1.4em; +} + +.embedded-content h3 { + font-size: 1.2em; +} + +.popular { + text-indent: -999em; +} + +.empty { + color: #6e6e6e; + font-style: italic; +} + +.page-heading { + margin-top: 0; + margin-bottom: 15px; +} + +.m-top { + margin-top: 15px; +} + +.m-left { + margin-left: 15px; +} + +.m-right { + margin-right: 15px; +} + +.m-bottom { + margin-bottom: 15px; +} + +.no-margin { + margin: 0; +} + +.reduced-margin { + margin: 3px 5px; +} + +.p-top { + padding-top: 15px; +} + +.p-left { + padding-left: 15px; +} + +.p-right { + padding-right: 15px; +} + +.p-bottom { + padding-bottom: 15px; +} + +.no-padding { + padding: 0; +} + +.reduced-padding { + padding: 3px 5px; +} + +.input-group-btn { + font-size: unset !important; +} \ No newline at end of file diff --git a/ckanext/ubdc/assets/js/ubdc.js b/ckanext/ubdc/assets/js/ubdc.js new file mode 100644 index 0000000..f45c512 --- /dev/null +++ b/ckanext/ubdc/assets/js/ubdc.js @@ -0,0 +1,3 @@ +$('.site-search button').click(function(event) { + $('#field-sitewide-search').addClass(''); +}); diff --git a/ckanext/ubdc/assets/webassets.yml b/ckanext/ubdc/assets/webassets.yml index 0b6f57e..b1470cf 100644 --- a/ckanext/ubdc/assets/webassets.yml +++ b/ckanext/ubdc/assets/webassets.yml @@ -1,14 +1,14 @@ -# ubdc-js: -# filter: rjsmin -# output: ckanext-ubdc/%(version)s-ubdc.js -# contents: -# - js/ubdc.js -# extra: -# preload: -# - base/main +ubdc-js: + filter: rjsmin + output: ckanext-ubdc/%(version)s-ubdc.js + contents: + - js/ubdc.js + extra: + preload: + - base/main -# ubdc-css: -# filter: cssrewrite -# output: ckanext-ubdc/%(version)s-ubdc.css -# contents: -# - css/ubdc.css +ubdc-css: + filter: cssrewrite + output: ckanext-ubdc/%(version)s-ubdc.css + contents: + - css/style.css diff --git a/ckanext/ubdc/dataset_schema.yaml b/ckanext/ubdc/dataset_schema.yaml index 6fddbb8..edd3d14 100644 --- a/ckanext/ubdc/dataset_schema.yaml +++ b/ckanext/ubdc/dataset_schema.yaml @@ -11,6 +11,10 @@ dataset_fields: preset: title form_placeholder: eg. A descriptive title +- field_name: alternative_title + label: Alternative title + form_placeholder: eg. An alternative dataset title + - field_name: name label: URL preset: dataset_slug @@ -21,42 +25,166 @@ dataset_fields: form_snippet: markdown.html form_placeholder: eg. Some useful notes about the data +- field_name: content + label: Content + form_snippet: markdown.html + form_placeholder: eg. Some useful content about what does the dataset consists of (more tables, some specifics etc…) + +- field_name: subject + label: Subject + form_snippet: markdown.html + form_placeholder: eg. Subject of the dataset ie housing/transport + - field_name: tag_string - label: Tags + label: Topics preset: tag_string_autocomplete form_placeholder: eg. economy, mental health, government +- field_name: dataset_citation + label: Dataset Citation + +- field_name: time_period_coverage + label: Time Period Coverage + +- field_name: geographical_coverage + label: Geographical Coverage + +- field_name: spatial_units + label: Subject + +- field_name: observation_units + label: Observation Units + +- field_name: resource_type + label: Resource Type + +- field_name: data_format + label: Data Format + +- field_name: weighting + label: Weighting + +- field_name: method_of_collection + label: Method of Collection + +- field_name: collection_status + label: Collection Status + +- field_name: dataset_fields + label: Dataset Fields + +- field_name: dataset_aggregation + label: Dataset Aggregation + +- field_name: data_owner + label: Data Owner + +- field_name: data_owner_url + label: Data Owner Url + - field_name: license_id - label: License - form_snippet: license.html - help_text: License definitions and additional information can be found at http://opendefinition.org/ + label: Licence Name + +- field_name: license_specifics + label: Licence Specifics + form_snippet: markdown.html + form_placeholder: eg. Some useful notes about the licence - field_name: owner_org label: Organization preset: dataset_organization -- field_name: url - label: Source - form_placeholder: http://example.com/dataset.json - display_property: foaf:homepage - display_snippet: link.html - field_name: version label: Version validators: ignore_missing unicode_safe package_version_validator form_placeholder: '1.0' -- field_name: author - label: Author - form_placeholder: Joe Bloggs - display_property: dc:creator +- field_name: dataset_available + label: Dataset Available + reset: date + form_placeholder: eg. 2011-01-01 + +- field_name: dataset_closed + label: Dataset Closed + preset: date + form_placeholder: eg. 2011-01-01 + +- field_name: dataset_valid + label: Dataset Valid + preset: date + form_placeholder: eg. 2011-01-01 + +- field_name: dataset_updating_frequency + label: Dataset Updating Frequency + form_placeholder: eg. Every monthy + +- field_name: dataset_next_version_due + label: Dataset Next Version Due + preset: date + form_placeholder: eg. 2011-01-01 + +- field_name: date_published + label: Date Published + preset: date + form_placeholder: eg. 2022-01-01 + +- field_name: date_of_fieldwork + label: Date of Fieldwork + form_placeholder: eg. 2022-01-01 to 2022-02-29 + +- field_name: dataset_file_type + label: Dataset File Type + form_placeholder: eg. CSV + +- field_name: dataset_file_size + label: Dataset File Size + form_placeholder: eg. 1.5MB + +- field_name: dataset_creation_date + label: Dataset Creation Date + preset: date + form_placeholder: eg. 2011-01-01 + +- field_name: dataset_access_restrictions + label: Dataset Access Restrictions + form_placeholder: eg. Open, Safeguarded or Controlled Dataset + +- field_name: metadata_created_date + label: Metadata Created Date + preset: date + form_placeholder: eg. 2022-01-01 + +- field_name: metadata_created_institution + label: Metadata Created Institution + form_placeholder: eg. Urban Big Data Centre + +# - field_name: dataset_fields +# label: Dataset Fields +# repeating_label: Dataset Field +# repeating_subfields: + +# - field_name: name +# label: Field Name + +# - field_name: description +# label: Description + +# - field_name: type +# label: Type +# preset: select +# choices: +# - value: text +# label: Text +# - value: number +# label: Number +# - value: date +# label: Date +# - value: boolean +# label: Boolean +# - value: other +# label: Other -- field_name: author_email - label: Author Email - form_placeholder: joe@example.com - display_property: dc:creator - display_snippet: email.html - display_email_name_field: author - field_name: publishing_status label: Publishing Status @@ -64,17 +192,6 @@ dataset_fields: display_snippet: null validators: ignore_missing publishing_status_validator -- field_name: maintainer - label: Maintainer - form_placeholder: Joe Bloggs - display_property: dc:contributor - -- field_name: maintainer_email - label: Maintainer Email - form_placeholder: joe@example.com - display_property: dc:contributor - display_snippet: email.html - display_email_name_field: maintainer resource_fields: diff --git a/ckanext/ubdc/helpers.py b/ckanext/ubdc/helpers.py new file mode 100644 index 0000000..1d81fa1 --- /dev/null +++ b/ckanext/ubdc/helpers.py @@ -0,0 +1,22 @@ + +from ckan import model +from ckan.logic import get_action + + +def popular_datasets(limit=3): + """Return a list of the most popular datasets.""" + context = {'model': model, 'session': model.Session} + data_dict = {'sort': 'views_recent desc', 'rows': limit} + return get_action('package_search')(context, data_dict)['results'] + + +def resources_count(): + """Return the total number of resources.""" + context = {'model': model, 'session': model.Session} + data_dict = {'query': 'name:'} + return get_action('resource_search')(context, data_dict)['count'] + +def tags_count(): + """Return the total number of tags.""" + context = {'model': model, 'session': model.Session} + return {'count': len(get_action('tag_list')(context, {})) } \ No newline at end of file diff --git a/ckanext/ubdc/plugin.py b/ckanext/ubdc/plugin.py index c3ce157..249ba5b 100644 --- a/ckanext/ubdc/plugin.py +++ b/ckanext/ubdc/plugin.py @@ -1,13 +1,21 @@ import ckan.plugins as plugins import ckan.plugins.toolkit as toolkit - +import ckanext.ubdc.helpers as helpers class UbdcPlugin(plugins.SingletonPlugin): plugins.implements(plugins.IConfigurer) + plugins.implements(plugins.ITemplateHelpers) # IConfigurer def update_config(self, config_): toolkit.add_template_directory(config_, 'templates') toolkit.add_public_directory(config_, 'public') - toolkit.add_resource('fanstatic', - 'ubdc') + toolkit.add_resource('assets', 'ubdc') + + # ITemplateHelpers + def get_helpers(self): + return { + 'popular_datasets': helpers.popular_datasets, + 'resources_count': helpers.resources_count, + 'tags_count': helpers.tags_count, + } \ No newline at end of file diff --git a/ckanext/ubdc/public/base/images/csv-icon.svg b/ckanext/ubdc/public/base/images/csv-icon.svg new file mode 100644 index 0000000..12854e8 --- /dev/null +++ b/ckanext/ubdc/public/base/images/csv-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/ckanext/ubdc/public/base/images/fav.png b/ckanext/ubdc/public/base/images/fav.png new file mode 100644 index 0000000..0aca97d Binary files /dev/null and b/ckanext/ubdc/public/base/images/fav.png differ diff --git a/ckanext/ubdc/public/base/images/funding/ukri_esr_council.svg b/ckanext/ubdc/public/base/images/funding/ukri_esr_council.svg new file mode 100644 index 0000000..a48e2e3 --- /dev/null +++ b/ckanext/ubdc/public/base/images/funding/ukri_esr_council.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ckanext/ubdc/public/base/images/funding/university-glasgow.gif.svg b/ckanext/ubdc/public/base/images/funding/university-glasgow.gif.svg new file mode 100644 index 0000000..d28a688 --- /dev/null +++ b/ckanext/ubdc/public/base/images/funding/university-glasgow.gif.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ckanext/ubdc/public/base/images/hero.png b/ckanext/ubdc/public/base/images/hero.png new file mode 100644 index 0000000..f287216 Binary files /dev/null and b/ckanext/ubdc/public/base/images/hero.png differ diff --git a/ckanext/ubdc/public/base/images/logo.png b/ckanext/ubdc/public/base/images/logo.png new file mode 100644 index 0000000..c831e1d Binary files /dev/null and b/ckanext/ubdc/public/base/images/logo.png differ diff --git a/ckanext/ubdc/public/base/images/pdf-icon.svg b/ckanext/ubdc/public/base/images/pdf-icon.svg new file mode 100644 index 0000000..49eff14 --- /dev/null +++ b/ckanext/ubdc/public/base/images/pdf-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/ckanext/ubdc/public/base/images/popular-dataset-bg.png b/ckanext/ubdc/public/base/images/popular-dataset-bg.png new file mode 100644 index 0000000..2b766ce Binary files /dev/null and b/ckanext/ubdc/public/base/images/popular-dataset-bg.png differ diff --git a/ckanext/ubdc/public/base/images/providers/Standard-wide-logo-1 1.png b/ckanext/ubdc/public/base/images/providers/Standard-wide-logo-1 1.png new file mode 100644 index 0000000..6935507 Binary files /dev/null and b/ckanext/ubdc/public/base/images/providers/Standard-wide-logo-1 1.png differ diff --git a/ckanext/ubdc/public/base/images/providers/image 14.png b/ckanext/ubdc/public/base/images/providers/image 14.png new file mode 100644 index 0000000..5e4aeed Binary files /dev/null and b/ckanext/ubdc/public/base/images/providers/image 14.png differ diff --git a/ckanext/ubdc/public/base/images/providers/image 15.png b/ckanext/ubdc/public/base/images/providers/image 15.png new file mode 100644 index 0000000..409bfa1 Binary files /dev/null and b/ckanext/ubdc/public/base/images/providers/image 15.png differ diff --git a/ckanext/ubdc/public/base/images/providers/image 19.png b/ckanext/ubdc/public/base/images/providers/image 19.png new file mode 100644 index 0000000..b9e7ea6 Binary files /dev/null and b/ckanext/ubdc/public/base/images/providers/image 19.png differ diff --git a/ckanext/ubdc/public/base/images/providers/image 20.png b/ckanext/ubdc/public/base/images/providers/image 20.png new file mode 100644 index 0000000..bb10e75 Binary files /dev/null and b/ckanext/ubdc/public/base/images/providers/image 20.png differ diff --git a/ckanext/ubdc/public/base/images/providers/image 21.png b/ckanext/ubdc/public/base/images/providers/image 21.png new file mode 100644 index 0000000..f9d66d8 Binary files /dev/null and b/ckanext/ubdc/public/base/images/providers/image 21.png differ diff --git a/ckanext/ubdc/public/base/images/svg/checked.svg b/ckanext/ubdc/public/base/images/svg/checked.svg new file mode 100644 index 0000000..2df029d --- /dev/null +++ b/ckanext/ubdc/public/base/images/svg/checked.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ckanext/ubdc/public/base/images/svg/locked.svg b/ckanext/ubdc/public/base/images/svg/locked.svg new file mode 100644 index 0000000..d688712 --- /dev/null +++ b/ckanext/ubdc/public/base/images/svg/locked.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ckanext/ubdc/public/base/images/svg/unlocked.svg b/ckanext/ubdc/public/base/images/svg/unlocked.svg new file mode 100644 index 0000000..d688712 --- /dev/null +++ b/ckanext/ubdc/public/base/images/svg/unlocked.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ckanext/ubdc/public/base/images/ubdc-logo.svg b/ckanext/ubdc/public/base/images/ubdc-logo.svg new file mode 100644 index 0000000..d4b3aa1 --- /dev/null +++ b/ckanext/ubdc/public/base/images/ubdc-logo.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ckanext/ubdc/public/base/scss/_activity.scss b/ckanext/ubdc/public/base/scss/_activity.scss new file mode 100644 index 0000000..69b8784 --- /dev/null +++ b/ckanext/ubdc/public/base/scss/_activity.scss @@ -0,0 +1,189 @@ +.activity { + // margin: 10px 0; + padding: 0; + list-style-type: none; + background: transparent url('#{$imagePath}/dotted.png') 14px 0 repeat-y; + .item { + position: relative; + margin: 0 0 15px 0; + padding: 0; + @include clearfix; + .icon { + display: block; + position: absolute; + top: 0; + left: 0; + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + color: $activityColorText; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + font-weight: normal; + margin-right: 10px; + @include border-radius(100px); + @include box-shadow(inset 0 1px 2px rgba(0, 0, 0, 0.2)); + } + .user-image { + @include border-radius(100px); + } + .actor .user-image { + position: absolute; + top: 0; + left: 40px; + } + p { + font-size: 14px; + line-height: 1.5; + margin: 5px 0 0 80px; + } + .date { + color: #999; + font-size: 12px; + white-space: nowrap; + } + .new { + display: block; + position: absolute; + overflow: hidden; + top: -3px; + left: -3px; + width: 10px; + height: 10px; + background-color: #A35647; + border: 1px solid #FFF; + text-indent: -1000px; + @include border-radius(100px); + @include box-shadow(0 1px 2px rgba(0, 0, 0, 0.2)); + } + &.no-avatar p { + margin-left: 40px; + } + } + .load-less { + margin-bottom: 15px; + } +} + +// For profile information that appears in the popover +.popover { + width: 300px; + .popover-title { + font-weight: bold; + margin-bottom: 0; + } + p.about { + margin: 0 0 10px 0; + } + .popover-close { + float: right; + text-decoration: none; + } + .popover-content { + font-size: $font-size-base; + line-height: $line-height-base; + color: $layoutTextColor; + word-break: break-all; + dl { + margin: 0; + dd { + margin-left: 0; + margin-bottom: 10px; + } + } + } +} + +// colors +.activity .item { + &.icon { + background-color: #333 ; + } // Non defined + &.failure .icon { + background-color: $activityColorDelete; + } + &.success .icon { + background-color: $activityColorNew; + } + &.added-tag .icon { + background-color: adjust-hue($activityColorNew, 60); + } + &.changed-group .icon { + background-color: $activityColorModify; + } + &.changed-package .icon { + background-color: adjust-hue($activityColorModify, 20); + } + &.changed-package_extra .icon { + background-color: adjust-hue($activityColorModify, -20); + } + &.changed-resource .icon { + background-color: adjust-hue($activityColorModify, 40); + } + &.changed-user .icon { + background-color: adjust-hue($activityColorModify, -40); + } + &.changed-organization .icon { + background-color: adjust-hue($activityColorNew, 50); + } + &.deleted-group .icon { + background-color: $activityColorDelete; + } + &.deleted-package .icon { + background-color: adjust-hue($activityColorDelete, 20); + } + &.deleted-package_extra .icon { + background-color: adjust-hue($activityColorDelete, -20); + } + &.deleted-resource .icon { + background-color: adjust-hue($activityColorDelete, 40); + } + &.deleted-organization .icon { + background-color: adjust-hue($activityColorDelete, -40); + } + &.new-group .icon { + background-color: $activityColorNew; + } + &.new-package .icon { + background-color: adjust-hue($activityColorNew, 20); + } + &.new-package_extra .icon { + background-color: adjust-hue($activityColorNew, -20); + } + &.new-resource .icon { + background-color: adjust-hue($activityColorNew, -40); + } + &.new-user .icon { + background-color: adjust-hue($activityColorNew, 40); + } + &.new-organization .icon { + background-color: adjust-hue($activityColorNew, -40); + } + &.removed-tag .icon { + background-color: adjust-hue($activityColorDelete, -40); + } + &.deleted-related-item .icon { + background-color: adjust-hue($activityColorDelete, 60); + } + &.follow-dataset .icon { + background-color: $activityColorNeutral; + } + &.follow-user .icon { + background-color: adjust-hue($activityColorNeutral, 20); + } + &.new-related-item .icon { + background-color: adjust-hue($activityColorNew, -60); + } + &.follow-group .icon { + background-color: adjust-hue($activityColorNew, -50); + } +} + +.select-time { + width: 250px; + display: inline; +} + +br.line-height2 { + line-height: 2; +} diff --git a/ckanext/ubdc/public/base/scss/_alerts.scss b/ckanext/ubdc/public/base/scss/_alerts.scss new file mode 100644 index 0000000..7921b47 --- /dev/null +++ b/ckanext/ubdc/public/base/scss/_alerts.scss @@ -0,0 +1,5 @@ +// Add this alert class for backwards compatibility, since Bootstrap 3 removed +// the "alert-error" class, but it has the same properties as "alert-danger". +.alert-error { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/ckanext/ubdc/public/base/scss/_bootstrap-rtl.scss b/ckanext/ubdc/public/base/scss/_bootstrap-rtl.scss new file mode 100644 index 0000000..6ea023b --- /dev/null +++ b/ckanext/ubdc/public/base/scss/_bootstrap-rtl.scss @@ -0,0 +1,1601 @@ +/* + * Standard RTL for Bootstrap 3.3.7.3 (http://parsmizban.com) + * Copyright (c) 2017 Farhad Sakhaei + * Licensed under MIT (https://github.com/parsmizban/Bootstrap-RTL/blob/master/LICENSE) + */ + +html { + direction: rtl; + font-family: Tahoma, Arial, sans-serif; +} +body, +.tooltip, +.popover, +.carousel-control .icon-prev, +.carousel-control .icon-next { + direction: rtl; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; +} +.glyphicon-align-left:before { + content: "\e054"; +} +.glyphicon-align-right:before { + content: "\e052"; +} +.glyphicon-chevron-left:before { + content: "\e080"; +} +.glyphicon-chevron-right:before { + content: "\e079"; +} +.glyphicon-arrow-left:before { + content: "\e092"; +} +.glyphicon-arrow-right:before { + content: "\e091"; +} +.glyphicon-hand-right:before { + content: "\e128"; +} +.glyphicon-hand-left:before { + content: "\e127"; +} +.glyphicon-circle-arrow-right:before { + content: "\e132"; +} +.glyphicon-circle-arrow-left:before { + content: "\e131"; +} +.glyphicon-object-align-left:before { + content: "\e249"; +} +.glyphicon-object-align-right:before { + content: "\e247"; +} +.glyphicon-triangle-right:before { + content: "\e251"; +} +.glyphicon-triangle-left:before { + content: "\e250"; +} +.glyphicon-menu-left:before { + content: "\e258"; +} +.glyphicon-menu-right:before { + content: "\e257"; +} + +.text-left { + text-align: right; +} +.text-right { + text-align: left; +} +.list-unstyled { + padding-right: 0; + padding-left: initial; +} +.list-inline { + padding-right: 0; + padding-left: initial; + margin-right: -5px; + margin-left: initial; +} +dd { + margin-right: 0; + margin-left: initial; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: right; + clear: right; + text-align: left; + } + .dl-horizontal dd { + margin-right: 180px; + margin-left: initial; + } +} +blockquote { + border-right: 5px solid #eee; + border-left: initial; +} +.blockquote-reverse, +blockquote.pull-right { + padding-left: 0; + padding-right: 15px; + text-align: right; + border-left: 0; + border-right: 5px solid #eee; +} +code, +kbd, +pre, +samp { + direction: ltr; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: right; +} +.col-xs-pull-12 { + right: auto; + left: 100%; +} +.col-xs-pull-11 { + right: auto; + left: 91.66666667%; +} +.col-xs-pull-10 { + right: auto; + left: 83.33333333%; +} +.col-xs-pull-9 { + right: auto; + left: 75%; +} +.col-xs-pull-8 { + right: auto; + left: 66.66666667%; +} +.col-xs-pull-7 { + right: auto; + left: 58.33333333%; +} +.col-xs-pull-6 { + right: auto; + left: 50%; +} +.col-xs-pull-5 { + right: auto; + left: 41.66666667%; +} +.col-xs-pull-4 { + right: auto; + left: 33.33333333%; +} +.col-xs-pull-3 { + right: auto; + left: 25%; +} +.col-xs-pull-2 { + right: auto; + left: 16.66666667%; +} +.col-xs-pull-1 { + right: auto; + left: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; + left: auto; +} +.col-xs-push-12 { + left: auto; + right: 100%; +} +.col-xs-push-11 { + left: auto; + right: 91.66666667%; +} +.col-xs-push-10 { + left: auto; + right: 83.33333333%; +} +.col-xs-push-9 { + left: auto; + right: 75%; +} +.col-xs-push-8 { + left: auto; + right: 66.66666667%; +} +.col-xs-push-7 { + left: auto; + right: 58.33333333%; +} +.col-xs-push-6 { + left: auto; + right: 50%; +} +.col-xs-push-5 { + left: auto; + right: 41.66666667%; +} +.col-xs-push-4 { + left: auto; + right: 33.33333333%; +} +.col-xs-push-3 { + left: auto; + right: 25%; +} +.col-xs-push-2 { + left: auto; + right: 16.66666667%; +} +.col-xs-push-1 { + left: auto; + right: 8.33333333%; +} +.col-xs-push-0 { + right: auto; + left: auto; +} +.col-xs-offset-12 { + margin-left: initial; + margin-right: 100%; +} +.col-xs-offset-11 { + margin-left: initial; + margin-right: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: initial; + margin-right: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: initial; + margin-right: 75%; +} +.col-xs-offset-8 { + margin-left: initial; + margin-right: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: initial; + margin-right: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: initial; + margin-right: 50%; +} +.col-xs-offset-5 { + margin-left: initial; + margin-right: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: initial; + margin-right: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: initial; + margin-right: 25%; +} +.col-xs-offset-2 { + margin-left: initial; + margin-right: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: initial; + margin-right: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: initial; + margin-right: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: right; + } + .col-sm-pull-12 { + right: auto; + left: 100%; + } + .col-sm-pull-11 { + right: auto; + left: 91.66666667%; + } + .col-sm-pull-10 { + right: auto; + left: 83.33333333%; + } + .col-sm-pull-9 { + right: auto; + left: 75%; + } + .col-sm-pull-8 { + right: auto; + left: 66.66666667%; + } + .col-sm-pull-7 { + right: auto; + left: 58.33333333%; + } + .col-sm-pull-6 { + right: auto; + left: 50%; + } + .col-sm-pull-5 { + right: auto; + left: 41.66666667%; + } + .col-sm-pull-4 { + right: auto; + left: 33.33333333%; + } + .col-sm-pull-3 { + right: auto; + left: 25%; + } + .col-sm-pull-2 { + right: auto; + left: 16.66666667%; + } + .col-sm-pull-1 { + right: auto; + left: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + left: auto; + } + .col-sm-push-12 { + left: auto; + right: 100%; + } + .col-sm-push-11 { + left: auto; + right: 91.66666667%; + } + .col-sm-push-10 { + left: auto; + right: 83.33333333%; + } + .col-sm-push-9 { + left: auto; + right: 75%; + } + .col-sm-push-8 { + left: auto; + right: 66.66666667%; + } + .col-sm-push-7 { + left: auto; + right: 58.33333333%; + } + .col-sm-push-6 { + left: auto; + right: 50%; + } + .col-sm-push-5 { + left: auto; + right: 41.66666667%; + } + .col-sm-push-4 { + left: auto; + right: 33.33333333%; + } + .col-sm-push-3 { + left: auto; + right: 25%; + } + .col-sm-push-2 { + left: auto; + right: 16.66666667%; + } + .col-sm-push-1 { + left: auto; + right: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + right: auto; + } + .col-sm-offset-12 { + margin-left: initial; + margin-right: 100%; + } + .col-sm-offset-11 { + margin-left: initial; + margin-right: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: initial; + margin-right: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: initial; + margin-right: 75%; + } + .col-sm-offset-8 { + margin-left: initial; + margin-right: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: initial; + margin-right: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: initial; + margin-right: 50%; + } + .col-sm-offset-5 { + margin-left: initial; + margin-right: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: initial; + margin-right: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: initial; + margin-right: 25%; + } + .col-sm-offset-2 { + margin-left: initial; + margin-right: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: initial; + margin-right: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: initial; + margin-right: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: right; + } + .col-md-pull-12 { + right: auto; + left: 100%; + } + .col-md-pull-11 { + right: auto; + left: 91.66666667%; + } + .col-md-pull-10 { + right: auto; + left: 83.33333333%; + } + .col-md-pull-9 { + right: auto; + left: 75%; + } + .col-md-pull-8 { + right: auto; + left: 66.66666667%; + } + .col-md-pull-7 { + right: auto; + left: 58.33333333%; + } + .col-md-pull-6 { + right: auto; + left: 50%; + } + .col-md-pull-5 { + right: auto; + left: 41.66666667%; + } + .col-md-pull-4 { + right: auto; + left: 33.33333333%; + } + .col-md-pull-3 { + right: auto; + left: 25%; + } + .col-md-pull-2 { + right: auto; + left: 16.66666667%; + } + .col-md-pull-1 { + right: auto; + left: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + left: auto; + } + .col-md-push-12 { + left: auto; + right: 100%; + } + .col-md-push-11 { + left: auto; + right: 91.66666667%; + } + .col-md-push-10 { + left: auto; + right: 83.33333333%; + } + .col-md-push-9 { + left: auto; + right: 75%; + } + .col-md-push-8 { + left: auto; + right: 66.66666667%; + } + .col-md-push-7 { + left: auto; + right: 58.33333333%; + } + .col-md-push-6 { + left: auto; + right: 50%; + } + .col-md-push-5 { + left: auto; + right: 41.66666667%; + } + .col-md-push-4 { + left: auto; + right: 33.33333333%; + } + .col-md-push-3 { + left: auto; + right: 25%; + } + .col-md-push-2 { + left: auto; + right: 16.66666667%; + } + .col-md-push-1 { + left: auto; + right: 8.33333333%; + } + .col-md-push-0 { + left: auto; + right: auto; + } + .col-md-offset-12 { + margin-left: initial; + margin-right: 100%; + } + .col-md-offset-11 { + margin-left: initial; + margin-right: 91.66666667%; + } + .col-md-offset-10 { + margin-left: initial; + margin-right: 83.33333333%; + } + .col-md-offset-9 { + margin-left: initial; + margin-right: 75%; + } + .col-md-offset-8 { + margin-left: initial; + margin-right: 66.66666667%; + } + .col-md-offset-7 { + margin-left: initial; + margin-right: 58.33333333%; + } + .col-md-offset-6 { + margin-left: initial; + margin-right: 50%; + } + .col-md-offset-5 { + margin-left: initial; + margin-right: 41.66666667%; + } + .col-md-offset-4 { + margin-left: initial; + margin-right: 33.33333333%; + } + .col-md-offset-3 { + margin-left: initial; + margin-right: 25%; + } + .col-md-offset-2 { + margin-left: initial; + margin-right: 16.66666667%; + } + .col-md-offset-1 { + margin-left: initial; + margin-right: 8.33333333%; + } + .col-md-offset-0 { + margin-left: initial; + margin-right: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: right; + } + .col-lg-pull-12 { + right: auto; + left: 100%; + } + .col-lg-pull-11 { + right: auto; + left: 91.66666667%; + } + .col-lg-pull-10 { + right: auto; + left: 83.33333333%; + } + .col-lg-pull-9 { + right: auto; + left: 75%; + } + .col-lg-pull-8 { + right: auto; + left: 66.66666667%; + } + .col-lg-pull-7 { + right: auto; + left: 58.33333333%; + } + .col-lg-pull-6 { + right: auto; + left: 50%; + } + .col-lg-pull-5 { + right: auto; + left: 41.66666667%; + } + .col-lg-pull-4 { + right: auto; + left: 33.33333333%; + } + .col-lg-pull-3 { + right: auto; + left: 25%; + } + .col-lg-pull-2 { + right: auto; + left: 16.66666667%; + } + .col-lg-pull-1 { + right: auto; + left: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + left: auto; + } + .col-lg-push-12 { + left: auto; + right: 100%; + } + .col-lg-push-11 { + left: auto; + right: 91.66666667%; + } + .col-lg-push-10 { + left: auto; + right: 83.33333333%; + } + .col-lg-push-9 { + left: auto; + right: 75%; + } + .col-lg-push-8 { + left: auto; + right: 66.66666667%; + } + .col-lg-push-7 { + left: auto; + right: 58.33333333%; + } + .col-lg-push-6 { + left: auto; + right: 50%; + } + .col-lg-push-5 { + left: auto; + right: 41.66666667%; + } + .col-lg-push-4 { + left: auto; + right: 33.33333333%; + } + .col-lg-push-3 { + left: auto; + right: 25%; + } + .col-lg-push-2 { + left: auto; + right: 16.66666667%; + } + .col-lg-push-1 { + left: auto; + right: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + right: auto; + } + .col-lg-offset-12 { + margin-left: initial; + margin-right: 100%; + } + .col-lg-offset-11 { + margin-left: initial; + margin-right: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: initial; + margin-right: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: initial; + margin-right: 75%; + } + .col-lg-offset-8 { + margin-left: initial; + margin-right: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: initial; + margin-right: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: initial; + margin-right: 50%; + } + .col-lg-offset-5 { + margin-left: initial; + margin-right: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: initial; + margin-right: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: initial; + margin-right: 25%; + } + .col-lg-offset-2 { + margin-left: initial; + margin-right: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: initial; + margin-right: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: initial; + margin-right: 0; + } +} +caption { + text-align: right; +} +th { + text-align: right; +} +@media screen and (max-width: 767px) { + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: initial; + border-right: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: initial; + border-left: 0; + } +} +.radio label, +.checkbox label { + padding-left: initial; + padding-right: 20px; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + margin-left: initial; + margin-right: -20px; +} +.radio-inline, +.checkbox-inline { + padding-left: initial; + padding-right: 20px; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-left: initial; + margin-right: 10px; +} +.has-feedback .form-control { + padding-right: initial; + padding-left: 42.5px; +} +.form-control-feedback { + right: auto; + left: 0; +} +@media (min-width: 768px) { + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: initial; + padding-right: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + margin-left: initial; + margin-right: 0; + } +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: left; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: auto; + left: 15px; +} +.btn { + border-radius: 4px; +} +.caret { + margin-left: initial; + margin-right: 2px; +} +.dropdown-menu { + left: initial; + right: auto; + float: right; + text-align: right; +} +.dropdown-menu.pull-right { + right: auto; + left: 0; +} +.dropdown-menu-right { + right: auto; + left: 0; +} +.dropdown-menu-left { + right: 0; + left: auto; +} +.pull-right > .dropdown-menu { + right: auto; + left: 0; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: auto; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: auto; + } +} +.btn-group > .btn, +.btn-group-vertical > .btn { + float: right; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: initial; + margin-right: -1px; +} +.btn-toolbar { + margin-left: initial; + margin-right: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: right; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 0; + margin-right: 5px; +} +.btn-group > .btn:first-child { + margin-left: initial; + margin-right: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 4px; + border-top-left-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 4px; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group { + float: right; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 4px; + border-top-left-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 0; +} +.btn .caret { + margin-left: initial; + margin-right: 0; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + float: none; /* RTL Important */ +} +.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: initial; + margin-right: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; /* RTL Important */ +} +.btn-group-justified > .btn-group .dropdown-menu { + left: initial; + right: auto; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + float: right; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle{ + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + +} + +.input-group-addon:first-child { + border-right: 1px solid #ccc; + border-left: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:last-child { + border-left: 1px solid #ccc; + border-right: 0; +} +.input-group-btn > .btn + .btn { + margin-left: initial; + /* margin-right: -1px; RTL FIX */ +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: initial; + /* margin-left: -1px; RTL FIX */ +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: initial; + /* margin-right: -1px; RTL FIX */ +} +.nav { + padding-left: initial; + padding-right: 0; +} +.nav-tabs > li { + float: right; +} +.nav-tabs > li > a { + margin-right: initial; + margin-left: 2px; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + left: initial; + right: auto; +} +.nav-tabs.nav-justified > li > a { + margin-right: initial; + margin-left: 0; +} +.nav-pills > li { + float: right; +} +.nav-pills > li + li { + margin-left: initial; + margin-right: 2px; +} +.nav-stacked > li { + float: none; /* RTL Important */ +} +.nav-justified > li { + float: none; /* RTL Important */ +} +.nav-stacked > li + li { + margin-left: initial; + margin-right: 0; +} +.nav-justified > .dropdown .dropdown-menu { + right: initial; + left: auto; +} +.nav-tabs-justified > li > a { + margin-right: initial; + margin-left: 0; +} +@media (min-width: 768px) { + .navbar-header { + float: right; + } +} +.navbar-brand { + float: right; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: initial; + margin-right: -15px; + } +} +.navbar-toggle { + float: left; + margin-right: initial; + margin-left: 15px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; /* RTL Important */ + } +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + float: none; /* RTL Important */ + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 25px 5px 15px; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: right; + } + .navbar-nav > li { + float: right; + } +} +@media (min-width: 768px) { + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: initial; + padding-right: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + margin-left: initial; + margin-right: 0; + } +} +@media (min-width: 768px) { + .navbar-text { + float: right; + } +} +@media (min-width: 768px) { + .navbar-left { + float: right !important; + } + .navbar-right { + float: left !important; + margin-right: initial; + margin-left: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: initial; + margin-left: 0; + } +} +.pagination { + padding-left: initial; + padding-right: 0; +} +.pagination > li > a, +.pagination > li > span { + float: right; + margin-left: initial; + margin-right: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: initial; + margin-right: 0; + border-top-left-radius: initial; + border-top-right-radius: 4px; + border-bottom-left-radius: initial; + border-bottom-right-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: initial; + border-top-left-radius: 4px; + border-bottom-right-radius: initial; + border-bottom-left-radius: 4px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: initial; + border-top-right-radius: 6px; + border-bottom-left-radius: initial; + border-bottom-right-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: initial; + border-top-left-radius: 6px; + border-bottom-right-radius: initial; + border-bottom-left-radius: 6px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: initial; + border-top-right-radius: 3px; + border-bottom-left-radius: initial; + border-bottom-right-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: initial; + border-top-left-radius: 3px; + border-bottom-right-radius: initial; + border-bottom-left-radius: 3px; +} +.pager { + padding-left: initial; + padding-right: 0; +} +.pager .next > a, +.pager .next > span { + float: left; +} +.pager .previous > a, +.pager .previous > span { + float: right; +} +.list-group-item > .badge { + float: left; +} +.list-group-item > .badge + .badge { + margin-right: initial; + margin-left: 5px; +} +.nav-pills > li > a > .badge { + margin-left: initial; + margin-right: 3px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: initial; + padding-left: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + right: auto; + left: -21px; +} +.progress-bar { + float: right; +} +.media-right, +.media > .pull-right { + padding-left: initial; + padding-right: 10px; +} +.media-left, +.media > .pull-left { + padding-right: initial; + padding-left: 10px; +} +.media-list { + padding-left: initial; + padding-right: 0; +} +.list-group { + padding-left: initial; + padding-right: 0; +} +button.list-group-item { + text-align: right; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: initial; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: initial; + border-top-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: initial; + border-bottom-right-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: initial; + border-bottom-left-radius: 3px; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: initial; + border-right: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: initial; + border-left: 0; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + left: auto; + right: 0; +} +.close { + float: left; +} +.modal-footer { + text-align: left; +} +.modal-footer .btn + .btn { + margin-left: 0; + margin-right: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: initial; + margin-right: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: initial; + margin-right: 0; +} +.tooltip { + text-align: right; +} +.tooltip.right { + margin-left: initial; + margin-right: 3px; +} +.tooltip.left { + margin-left: initial; + margin-right: -3px; +} +.tooltip.top .tooltip-arrow { + left: auto; + right: 50%; + margin-left: initial; + margin-right: -5px; +} +.tooltip.top-left .tooltip-arrow { + right: auto; + left: 5px; +} +.tooltip.top-right .tooltip-arrow { + left: auto; + right: 5px; +} +.tooltip.right .tooltip-arrow { + left: auto; + right: 0; + border-width: 5px 0 5px 5px; + border-right-color: initial; + border-left-color: #000; +} +.tooltip.left .tooltip-arrow { + right: auto; + left: 0; + border-width: 5px 5px 5px 0; + border-left-color: initial; + border-right-color: #000; +} +.tooltip.bottom .tooltip-arrow { + left: auto; + right: 50%; + margin-left: initial; + margin-right: -5px; +} +.tooltip.bottom-left .tooltip-arrow { + right: auto; + left: 5px; +} +.tooltip.bottom-right .tooltip-arrow { + left: auto; + right: 5px; +} +.popover { + left: auto; + right: 0; + text-align: right; +} +.popover.right { + margin-left: initial; + margin-right: 10px; +} +.popover.left { + margin-left: initial; + margin-right: -10px; +} +.popover.top > .arrow { + left: auto; + right: 50%; + margin-left: initial; + margin-right: -11px; +} +.popover.top > .arrow:after { + margin-left: initial; + margin-right: -10px; +} +.popover.right > .arrow { + left: auto; + right: -11px; + border-right-color: initial; + border-left-color: #999; + border-right-color: initial; + border-left-color: rgba(0, 0, 0, .25); + border-left-width: initial; + border-right-width: 0; +} +.popover.right > .arrow:after { + left: auto; + right: 1px; + border-right-color: initial; + border-left-color: #fff; + border-left-width: initial; + border-right-width: 0; +} +.popover.bottom > .arrow { + left: auto; + right: 50%; + margin-left: initial; + margin-right: -11px; +} +.popover.bottom > .arrow:after { + margin-left: initial; + margin-right: -10px; +} +.popover.left > .arrow { + right: auto; + left: -11px; + border-right-width: initial; + border-left-width: 0; + border-left-color: initial; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: auto; + left: 1px; + border-right-width: initial; + border-left-width: 0; + border-left-color: initial; + border-right-color: #fff; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: auto; + right: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: auto; + right: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: auto; + right: 0; + } +} +.carousel-inner > .active { + left: auto; + right: 0; +} +.carousel-inner > .next { + left: auto; + right: 100%; +} +.carousel-inner > .prev { + left: auto; + right: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: auto; + right: 0; +} +.carousel-inner > .active.left { + left: auto; + right: -100%; +} +.carousel-inner > .active.right { + left: auto; + right: 100%; +} +.carousel-control { + left: auto; + right: 0; +} +.carousel-control.right { + right: auto; + left: 0; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: auto; + right: 50%; + margin-left: initial; + margin-right: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: auto; + left: 50%; + margin-right: initial; + margin-left: -10px; +} +.carousel-indicators { + left: auto; + right: 50%; + padding-left: initial; + padding-right: 0; + margin-left: initial; + margin-right: -30%; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: initial; + margin-right: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: initial; + margin-left: -10px; + } +} +.pull-right { + float: left !important; +} +.pull-left { + float: right !important; +} \ No newline at end of file diff --git a/ckanext/ubdc/public/base/scss/_bootstrap-variables.scss b/ckanext/ubdc/public/base/scss/_bootstrap-variables.scss new file mode 100644 index 0000000..eb10e42 --- /dev/null +++ b/ckanext/ubdc/public/base/scss/_bootstrap-variables.scss @@ -0,0 +1,869 @@ +// +// Variables +// -------------------------------------------------- +$bootstrap-sass-asset-helper: false !default; + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +$gray-base: #000 !default; +$gray-darker: lighten($gray-base, 13.5%) !default; // #222 +$gray-dark: lighten($gray-base, 20%) !default; // #333 +$gray: lighten($gray-base, 33.5%) !default; // #555 +$gray-light: lighten($gray-base, 46.7%) !default; // #777 +$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee + +$brand-primary: #F37021; +$brand-success: #3A833A; +$brand-info: #5bc0de; +$brand-warning: #f0ad4e; +$brand-danger: #d9534f; + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +$body-bg: #fff; +//** Global text color on ``. +$text-color: $gray-dark; + +//** Global textual link color. +$link-color: $brand-primary; +//** Link hover color set via `darken()` function. +$link-hover-color: darken($link-color, 15%); +//** Link hover decoration. +$link-hover-decoration: underline; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +$font-family-sans-serif: 'Open Sans', sans-serif; +$font-family-serif: Georgia, "Times New Roman", Times, serif; +//** Default monospace fonts for ``, ``, and `
`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
+$font-family-base:        $font-family-sans-serif;
+
+$font-size-base:          14px;
+$font-size-large:         ceil(($font-size-base * 1.25)); // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)); // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)); // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)); // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)); // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)); // ~18px
+$font-size-h5:            $font-size-base;
+$font-size-h6:            ceil(($font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+$headings-font-family:    inherit;
+$headings-font-weight:    700;
+$headings-line-height:    1.1;
+$headings-color:          inherit;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path:          "../vendor/bootstrap/fonts/";
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular";
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1@mixin 428 line-height (~20px to start).
+
+$padding-base-vertical:     6px;
+$padding-base-horizontal:   12px;
+
+$padding-large-vertical:    10px;
+$padding-large-horizontal:  16px;
+
+$padding-small-vertical:    5px;
+$padding-small-horizontal:  10px;
+
+$padding-xs-vertical:       1px;
+$padding-xs-horizontal:     5px;
+
+$line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5;
+
+$border-radius-base:        4px;
+$border-radius-large:       6px;
+$border-radius-small:       3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ``s.
+$table-cell-padding:            8px;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5;
+$table-bg-active:               $table-bg-hover;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal;
+
+$btn-default-color:              #333;
+$btn-default-bg:                 #fff;
+$btn-default-border:             #ccc;
+
+$btn-primary-color:              #fff;
+$btn-primary-bg:                 $brand-primary;
+$btn-primary-border:             darken($btn-primary-bg, 5%);
+
+$btn-success-color:              #fff;
+$btn-success-bg:                 $brand-success;
+$btn-success-border:             darken($btn-success-bg, 5%);
+
+$btn-info-color:                 #fff;
+$btn-info-bg:                    $brand-info;
+$btn-info-border:                darken($btn-info-bg, 5%);
+
+$btn-warning-color:              #fff;
+$btn-warning-bg:                 $brand-warning;
+$btn-warning-border:             darken($btn-warning-bg, 5%);
+
+$btn-danger-color:               #fff;
+$btn-danger-bg:                  $brand-danger;
+$btn-danger-border:              darken($btn-danger-bg, 5%);
+
+$btn-link-disabled-color:        $gray-light;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base;
+$btn-border-radius-large:        $border-radius-large;
+$btn-border-radius-small:        $border-radius-small;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+$input-bg:                       #fff;
+//** `` background color
+$input-bg-disabled:              $gray-lighter;
+
+//** Text color for ``s
+$input-color:                    $gray;
+//** `` border color
+$input-border:                   #ccc;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on ``s in CSS.
+$input-border-radius:            $border-radius-base;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9;
+
+//** Placeholder text color
+$input-color-placeholder:        #999;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2);
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2);
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2);
+
+//** `.form-group` margin
+$form-group-margin-bottom:       30px;
+
+$legend-color:                   $gray-dark;
+$legend-border-color:            #e5e5e5;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15);
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      darken($gray-dark, 5%);
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         #f5f5f5;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000;
+$zindex-dropdown:          1000;
+$zindex-popover:           1060;
+$zindex-tooltip:           1070;
+$zindex-navbar-fixed:      1030;
+$zindex-modal-background:  1040;
+$zindex-modal:             1050;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px;
+$screen-sm-min:              $screen-sm;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px;
+$screen-md-min:              $screen-md;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px;
+$screen-lg-min:              $screen-lg;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1);
+$screen-sm-max:              ($screen-md-min - 1);
+$screen-md-max:              ($screen-lg-min - 1);
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1);
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width);
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width);
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1260px + $grid-gutter-width);
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px;
+$navbar-margin-bottom:             $line-height-computed;
+$navbar-border-radius:             $border-radius-base;
+$navbar-padding-horizontal:        calc(($grid-gutter-width / 2));
+$navbar-padding-vertical:          calc(calc($navbar-height - $line-height-computed)/ 2);
+$navbar-collapse-max-height:       340px;
+
+$navbar-default-color:             #777;
+$navbar-default-bg:                #f8f8f8;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%);
+
+// Navbar links
+$navbar-default-link-color:                #777;
+$navbar-default-link-hover-color:          #333;
+$navbar-default-link-hover-bg:             transparent;
+$navbar-default-link-active-color:         #555;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%);
+$navbar-default-link-disabled-color:       #ccc;
+$navbar-default-link-disabled-bg:          transparent;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color;
+$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%);
+$navbar-default-brand-hover-bg:            transparent;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd;
+$navbar-default-toggle-icon-bar-bg:        #888;
+$navbar-default-toggle-border-color:       #ddd;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      lighten($gray-light, 15%);
+$navbar-inverse-bg:                         #222;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%);
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 lighten($gray-light, 15%);
+$navbar-inverse-link-hover-color:           #fff;
+$navbar-inverse-link-hover-bg:              transparent;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%);
+$navbar-inverse-link-disabled-color:        #444;
+$navbar-inverse-link-disabled-bg:           transparent;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color;
+$navbar-inverse-brand-hover-color:          #fff;
+$navbar-inverse-brand-hover-bg:             transparent;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #333;
+$navbar-inverse-toggle-icon-bar-bg:         #fff;
+$navbar-inverse-toggle-border-color:        #333;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px;
+$nav-link-hover-bg:                         $gray-lighter;
+
+$nav-disabled-link-color:                   $gray-light;
+$nav-disabled-link-hover-color:             $gray-light;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter;
+
+$nav-tabs-active-link-hover-bg:             $body-bg;
+$nav-tabs-active-link-hover-color:          $gray;
+$nav-tabs-active-link-hover-border-color:   #ddd;
+
+$nav-tabs-justified-link-border-color:            #ddd;
+$nav-tabs-justified-active-link-border-color:     $body-bg;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base;
+$nav-pills-active-link-hover-bg:            $component-active-bg;
+$nav-pills-active-link-hover-color:         $component-active-color;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color;
+$pagination-bg:                        #fff;
+$pagination-border:                    #ddd;
+
+$pagination-hover-color:               $link-hover-color;
+$pagination-hover-bg:                  $gray-lighter;
+$pagination-hover-border:              #ddd;
+
+$pagination-active-color:              #fff;
+$pagination-active-bg:                 $brand-primary;
+$pagination-active-border:             $brand-primary;
+
+$pagination-disabled-color:            $gray-light;
+$pagination-disabled-bg:               #fff;
+$pagination-disabled-border:           #ddd;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg;
+$pager-border:                         $pagination-border;
+$pager-border-radius:                  15px;
+
+$pager-hover-bg:                       $pagination-hover-bg;
+
+$pager-active-bg:                      $pagination-active-bg;
+$pager-active-color:                   $pagination-active-color;
+
+$pager-disabled-color:                 $pagination-disabled-color;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px;
+$jumbotron-color:                inherit;
+$jumbotron-bg:                   $gray-lighter;
+$jumbotron-heading-color:        inherit;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5));
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5));
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #3c763d;
+$state-success-bg:               #dff0d8;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%);
+
+$state-info-text:                #31708f;
+$state-info-bg:                  #d9edf7;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%);
+
+$state-warning-text:             #8a6d3b;
+$state-warning-bg:               #fcf8e3;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%);
+
+$state-danger-text:              #a94442;
+$state-danger-bg:                #f2dede;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%);
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px;
+//** Tooltip text color
+$tooltip-color:               #fff;
+//** Tooltip background color
+$tooltip-bg:                  #000;
+$tooltip-opacity:             .9;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff;
+//** Popover maximum width
+$popover-max-width:                   276px;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2);
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%);
+
+//** Popover arrow width
+$popover-arrow-width:                 10px;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1);
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%);
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%);
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light;
+//** Primary label background color
+$label-primary-bg:            $brand-primary;
+//** Success label background color
+$label-success-bg:            $brand-success;
+//** Info label background color
+$label-info-bg:               $brand-info;
+//** Warning label background color
+$label-warning-bg:            $brand-warning;
+//** Danger label background color
+$label-danger-bg:             $brand-danger;
+
+//** Default label text color
+$label-color:                 #fff;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         15px;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2);
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color;
+
+$modal-lg:                    900px;
+$modal-md:                    600px;
+$modal-sm:                    300px;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px;
+$alert-border-radius:         $border-radius-base;
+$alert-link-font-weight:      bold;
+
+$alert-success-bg:            $state-success-bg;
+$alert-success-text:          $state-success-text;
+$alert-success-border:        $state-success-border;
+
+$alert-info-bg:               $state-info-bg;
+$alert-info-text:             $state-info-text;
+$alert-info-border:           $state-info-border;
+
+$alert-warning-bg:            $state-warning-bg;
+$alert-warning-text:          $state-warning-text;
+$alert-warning-border:        $state-warning-border;
+
+$alert-danger-bg:             $state-danger-bg;
+$alert-danger-text:           $state-danger-text;
+$alert-danger-border:         $state-danger-border;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5;
+//** Progress bar text color
+$progress-bar-color:          #fff;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff;
+//** `.list-group-item` border color
+$list-group-border:             #ddd;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%);
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color;
+
+$list-group-link-color:         #555;
+$list-group-link-hover-color:   $list-group-link-color;
+$list-group-link-heading-color: #333;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff;
+$panel-body-padding:          15px;
+$panel-heading-padding:       10px 15px;
+$panel-footer-padding:        $panel-heading-padding;
+$panel-border-radius:         $border-radius-base;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd;
+$panel-footer-bg:             #f5f5f5;
+
+$panel-default-text:          $gray-dark;
+$panel-default-border:        #ddd;
+$panel-default-heading-bg:    #f5f5f5;
+
+$panel-primary-text:          #fff;
+$panel-primary-border:        $brand-primary;
+$panel-primary-heading-bg:    $brand-primary;
+
+$panel-success-text:          $state-success-text;
+$panel-success-border:        $state-success-border;
+$panel-success-heading-bg:    $state-success-bg;
+
+$panel-info-text:             $state-info-text;
+$panel-info-border:           $state-info-border;
+$panel-info-heading-bg:       $state-info-bg;
+
+$panel-warning-text:          $state-warning-text;
+$panel-warning-border:        $state-warning-border;
+$panel-warning-heading-bg:    $state-warning-bg;
+
+$panel-danger-text:           $state-danger-text;
+$panel-danger-border:         $state-danger-border;
+$panel-danger-heading-bg:     $state-danger-bg;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg;
+//** Thumbnail border color
+$thumbnail-border:            #ddd;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5;
+$well-border:                 darken($well-bg, 7%);
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff;
+$badge-bg:                    #6E6E6E;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff;
+
+$badge-font-weight:           bold;
+$badge-line-height:           1;
+$badge-border-radius:         10px;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px;
+$breadcrumb-padding-horizontal: 15px;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/";
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
+
+$carousel-control-color:                      #fff;
+$carousel-control-width:                      15%;
+$carousel-control-opacity:                    .5;
+$carousel-control-font-size:                  20px;
+
+$carousel-indicator-active-bg:                #fff;
+$carousel-indicator-border-color:             #fff;
+
+$carousel-caption-color:                      #fff;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold;
+$close-color:                 #000;
+$close-text-shadow:           0 1px 0 #fff;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e;
+$code-bg:                     #f9f2f4;
+
+$kbd-color:                   #fff;
+$kbd-bg:                      #333;
+
+$pre-bg:                      #f5f5f5;
+$pre-color:                   $gray-dark;
+$pre-border-color:            #ccc;
+$pre-scrollable-max-height:   340px;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px;
+//** Text muted color
+$text-muted:                  $gray;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light;
+//** Headings small color
+$headings-small-color:        $gray-light;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25);
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter;
+//** Page header border color
+$page-header-border-color:    $gray-lighter;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter;
diff --git a/ckanext/ubdc/public/base/scss/_bootstrap.scss b/ckanext/ubdc/public/base/scss/_bootstrap.scss
new file mode 100644
index 0000000..7c7c83f
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_bootstrap.scss
@@ -0,0 +1,56 @@
+/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+ // Core variables and mixins
+@import "bootstrap-variables.scss";
+@import "../vendor/bootstrap/stylesheets/bootstrap/mixins";
+
+// Reset and dependencies
+@import "../vendor/bootstrap/stylesheets/bootstrap/normalize";
+@import "../vendor/bootstrap/stylesheets/bootstrap/print";
+@import "../vendor/bootstrap/stylesheets/bootstrap/glyphicons";
+
+// Core CSS
+@import "../vendor/bootstrap/stylesheets/bootstrap/scaffolding";
+@import "../vendor/bootstrap/stylesheets/bootstrap/type";
+@import "../vendor/bootstrap/stylesheets/bootstrap/code";
+@import "../vendor/bootstrap/stylesheets/bootstrap/grid";
+@import "../vendor/bootstrap/stylesheets/bootstrap/tables";
+@import "../vendor/bootstrap/stylesheets/bootstrap/forms";
+@import "../vendor/bootstrap/stylesheets/bootstrap/buttons";
+
+// Components
+@import "../vendor/bootstrap/stylesheets/bootstrap/component-animations";
+@import "../vendor/bootstrap/stylesheets/bootstrap/dropdowns";
+@import "../vendor/bootstrap/stylesheets/bootstrap/button-groups";
+@import "../vendor/bootstrap/stylesheets/bootstrap/input-groups";
+@import "../vendor/bootstrap/stylesheets/bootstrap/navs";
+@import "../vendor/bootstrap/stylesheets/bootstrap/navbar";
+@import "../vendor/bootstrap/stylesheets/bootstrap/breadcrumbs";
+@import "../vendor/bootstrap/stylesheets/bootstrap/pagination";
+@import "../vendor/bootstrap/stylesheets/bootstrap/pager";
+@import "../vendor/bootstrap/stylesheets/bootstrap/labels";
+@import "../vendor/bootstrap/stylesheets/bootstrap/badges";
+@import "../vendor/bootstrap/stylesheets/bootstrap/jumbotron";
+@import "../vendor/bootstrap/stylesheets/bootstrap/thumbnails";
+@import "../vendor/bootstrap/stylesheets/bootstrap/alerts";
+@import "../vendor/bootstrap/stylesheets/bootstrap/progress-bars";
+@import "../vendor/bootstrap/stylesheets/bootstrap/media";
+@import "../vendor/bootstrap/stylesheets/bootstrap/list-group";
+@import "../vendor/bootstrap/stylesheets/bootstrap/panels";
+@import "../vendor/bootstrap/stylesheets/bootstrap/responsive-embed";
+@import "../vendor/bootstrap/stylesheets/bootstrap/wells";
+@import "../vendor/bootstrap/stylesheets/bootstrap/close";
+
+// Components w/ JavaScript
+@import "../vendor/bootstrap/stylesheets/bootstrap/modals";
+@import "../vendor/bootstrap/stylesheets/bootstrap/tooltip";
+@import "../vendor/bootstrap/stylesheets/bootstrap/popovers";
+@import "../vendor/bootstrap/stylesheets/bootstrap/carousel";
+
+// Utility classes
+@import "../vendor/bootstrap/stylesheets/bootstrap/utilities";
+@import "../vendor/bootstrap/stylesheets/bootstrap/responsive-utilities";
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/scss/_ckan-rtl.scss b/ckanext/ubdc/public/base/scss/_ckan-rtl.scss
new file mode 100644
index 0000000..1514102
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_ckan-rtl.scss
@@ -0,0 +1,109 @@
+@import "ckan.scss";
+
+.wrapper {
+  @media (min-width: $screen-sm-min) {
+    &:before {
+      left: initial;
+      right: 0;
+      width: 25%;
+      border-left: 1px solid $genericBorderColor;
+    }
+  }
+}
+
+.simple-input .field .btn-search {
+  right: initial;
+  left: 0;
+}
+
+@media (min-width: $screen-md-min) {
+    .masthead .navbar-collapse {
+        float: left;
+    }
+}
+
+.masthead {
+    .section {
+      float: right;
+    }
+    .navigation {
+      margin-right: initial;
+      margin-left: 20px;
+    }
+    .site-search {
+        @media (min-width: $screen-md-min) {
+            margin-right: $grid-gutter-width/2;
+        }
+        margin: ($grid-gutter-width/6 - 1) 0 ($grid-gutter-width/6 - 1) $grid-gutter-width/3 - 2;
+    }
+}
+
+@media (min-width: $screen-sm-min) {
+    .nav-item.active>a:before,
+    .nav-aside li.active a:before {
+        border-left: none;
+        border-right: inherit;
+        border-left-color: inherit;
+        border-left-width: inherit;
+        border-right-color: $navItemActiveBackgroundColor;
+        border-right-width: $navItemActiveArrowSize;
+        left: -$navItemActiveArrowSize;
+        right: inherit;
+    }
+}
+
+
+@media (min-width: $grid-float-breakpoint) {
+  .nav-pills>li {
+        float: right;
+    }
+}
+
+.heading, .module-heading, a, p, .dataset-list, .search-form, h1,
+#dataset-resources, .additional-info, .tags, td.dataset-details, th.dataset-label,
+.context-info, .flash-messages, .page_primary_action, .breadcrumb,
+.media-item, .nav-item
+{
+    direction: rtl;
+    text-align: right;
+}
+
+.search-form .search-input.search-giant button {
+    margin-top: -15px;
+    left: 15px;
+    right: auto;
+}
+
+.context-info .nums dl, .toolbar .breadcrumb {
+    float: right;
+}
+
+.resource-item .btn-group {
+    left: 10px;
+    right: auto;
+}
+
+.resource-item .format-label {
+    left: auto;
+    right: 10px;
+
+}
+
+.resource-item {
+    padding: 10px 60px 10px 10px;
+}
+
+.homepage .module-search .tags h3, .homepage .module-search .tags .tag {
+    float: right;
+}
+
+.nav-facet .nav-item a span.item-label {
+    padding-right: 15px;
+}
+
+@media (min-width: $screen-md-min) {
+    .homepage.layout-1 .row1 .col2 {
+        right: auto;
+        left: 0;
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_ckan.scss b/ckanext/ubdc/public/base/scss/_ckan.scss
new file mode 100644
index 0000000..0f7c133
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_ckan.scss
@@ -0,0 +1,178 @@
+@import "variables.scss";
+@import "custom.scss";
+@import "mixins.scss";
+@import "module.scss";
+@import "media.scss";
+@import "nav.scss";
+@import "forms.scss";
+@import "dataset.scss";
+@import "search.scss";
+@import "group.scss";
+@import "toolbar.scss";
+@import "prose.scss";
+@import "icons.scss";
+@import "layout.scss";
+@import "homepage.scss";
+@import "masthead.scss";
+@import "footer.scss";
+@import "tables.scss";
+@import "profile.scss";
+@import "activity.scss";
+@import "dropdown.scss";
+@import "dashboard.scss";
+@import "resource-view.scss";
+@import "datapusher.scss";
+@import "alerts.scss";
+@import "input-groups.scss";
+
+body {
+    // Using the masthead/footer gradient prevents the color from changing
+    // at the bottom of the window on pages with little content.
+    background: #fff;
+    font-size: $font-size-medium;
+    font-weight: 400;
+    color: #7c878d;
+}
+
+[hidden] {
+    display: none;
+}
+
+table {
+    table-layout: fixed;
+}
+
+thead th {
+    vertical-align: top;
+}
+
+td,
+th {
+    word-wrap: break-word;
+}
+
+table .metric {
+    width: 140px;
+}
+
+code {
+    color: $codeTextColor;
+    border: none;
+    background: none;
+    white-space: normal;
+}
+
+pre {
+    border: none;
+    background: none;
+    padding-left: 0;
+    padding-right: 0;
+}
+
+mark {
+    background: $highlightBackground;
+}
+
+blockquote p {
+    font-size: 1em;
+}
+
+iframe {
+    border: none;
+}
+.btn {
+    border-radius: 5px;
+    text-transform: uppercase;
+    text-decoration: none;
+    text-align: center;
+    letter-spacing: 0.5px;
+    border: 2px solid $brandPrimary;
+    outline: none;
+    font-size: 1em;
+    font-weight: bold;
+}
+
+.btn-primary {
+    color: #fff;
+    transition: all 0.2s ease-in-out 0s;
+}
+
+.embedded-content h1 {
+    font-size: 1.8em;
+}
+
+.embedded-content h2 {
+    font-size: 1.4em;
+}
+
+.embedded-content h3 {
+    font-size: 1.2em;
+}
+
+.popular {
+    text-indent: -999em;
+}
+
+.empty {
+    color: $emptyTextColor;
+    font-style: italic;
+}
+
+.page-heading {
+    margin-top: 0;
+    margin-bottom: calc($grid-gutter-width/2);
+}
+
+.m-top {
+    margin-top: $gutterSmallX;
+}
+
+.m-left {
+    margin-left: $gutterSmallX;
+}
+
+.m-right {
+    margin-right: $gutterSmallX;
+}
+
+.m-bottom {
+    margin-bottom: $gutterSmallX;
+}
+
+.no-margin {
+    margin: 0;
+}
+
+.reduced-margin {
+    margin: 3px 5px;
+}
+
+.p-top {
+    padding-top: $gutterSmallX;
+}
+
+.p-left {
+    padding-left: $gutterSmallX;
+}
+
+.p-right {
+    padding-right: $gutterSmallX;
+}
+
+.p-bottom {
+    padding-bottom: $gutterSmallX;
+}
+
+.no-padding {
+    padding: 0;
+}
+
+.reduced-padding {
+    padding: 3px 5px;
+}
+
+.input-group-btn {
+    font-size: unset !important;
+}
+
+// @import "iehacks.scss";
diff --git a/ckanext/ubdc/public/base/scss/_custom.scss b/ckanext/ubdc/public/base/scss/_custom.scss
new file mode 100644
index 0000000..e409e91
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_custom.scss
@@ -0,0 +1 @@
+// This file is needed in order for `gulp build` to compile in less 1.3.1+
diff --git a/ckanext/ubdc/public/base/scss/_dashboard.scss b/ckanext/ubdc/public/base/scss/_dashboard.scss
new file mode 100644
index 0000000..1fa7d5a
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_dashboard.scss
@@ -0,0 +1,130 @@
+#followee-filter {
+    .btn {
+        @include clearfix();
+        span,
+        strong {
+            // display: block;
+            // float: left;
+            line-height: 1.5;
+        }
+        span {
+            font-weight: normal;
+        }
+        strong {
+            margin: 0 5px;
+            white-space: nowrap;
+            max-width: 90px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+        }
+    }
+}
+
+.dashboard-context {
+    position: relative;
+    margin-bottom: 20px;
+    padding: 20px;
+    border-bottom: 1px solid #DCDCDC;
+    background-color: $moduleHeadingBackgroundColor;
+    @include border-radius(3px 0 0 0);
+    h2 {
+        margin-bottom: 10px;
+    }
+    .arrow {
+        position: absolute;
+        content: ' ';
+        top: 30px;
+        right: -10px;
+        width: 10px;
+        height: 21px;
+        background: transparent url("${imagePath}/dashboard-followee-related.png");
+    }
+}
+
+.popover-followee {
+    .popover-title {
+        display: none;
+    }
+    .popover-content {
+        padding: 0;
+        @include border-radius(3px);
+    }
+    .empty {
+        padding: 10px;
+    }
+    .popover-header {
+        @include clearfix();
+        background-color: whiteSmoke;
+        padding: 5px;
+        border-bottom: 1px solid $inputBorder;
+        @include border-radius(3px 3px 0 0);
+        .input-group {
+            margin-bottom: 0;
+        }
+        .input-group-addon,
+        input {
+            margin: 0;
+        }
+        .input-group-addon {
+            padding: 4px 8px 4px 12px;
+            border-right-width: 0;
+            @include border-radius(100px 0 0 100px);
+        }
+        input {
+            padding: 4px 12px 4px 8px;
+            font-size: 13px;
+            width: 227px;
+            @include border-radius(0 100px 100px 0);
+        }
+    }
+    .nav {
+        padding: 0;
+        margin: 0;
+        max-height: 205px;
+        overflow: auto;
+        @include border-radius(0 0 3px 3px);
+        li {
+            a {
+                display: block;
+                overflow: hidden;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+                padding: 7px 10px 7px 15px;
+                margin: 0;
+                @include border-radius(0);
+                i {
+                    background-color: $layoutLinkColor;
+                    color: $inputBackground;
+                    margin-right: 11px;
+                    padding: 3px 5px;
+                    line-height: 1;
+                    @include border-radius(100px);
+                    @include box-shadow(inset 0 1px 2x rgba(0, 0, 0, 0.2));
+                }
+                &:hover i {
+                    background-color: #000;
+                }
+            }
+            &.active a i {
+                color: $layoutLinkColor;
+                background-color: $inputBackground;
+            }
+            float: none;
+        }
+    }
+}
+
+.dashboard-me {
+    @include clearfix;
+    padding: 15px 15px 0 15px;
+    img {
+        float: left;
+        margin-right: 10px;
+        @include border-radius(100px);
+    }
+    strong {
+        display: block;
+        font-size: 16px;
+        margin: 3px 0;
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_datapusher.scss b/ckanext/ubdc/public/base/scss/_datapusher.scss
new file mode 100644
index 0000000..99efd1b
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_datapusher.scss
@@ -0,0 +1,22 @@
+.datapusher-status-link:hover {
+    text-decoration: none;
+}
+
+.datapusher-status {
+    &.status-unknown {
+        color: #bbb;
+    }
+    &.status-pending {
+        color: #FFCC00;
+    }
+    &.status-error {
+        color: red;
+    }
+    &.status-complete {
+        color: #009900;
+    }
+}
+
+.datapusher-form {
+  margin-bottom: 20px;
+}
diff --git a/ckanext/ubdc/public/base/scss/_dataset.scss b/ckanext/ubdc/public/base/scss/_dataset.scss
new file mode 100644
index 0000000..60df9a4
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_dataset.scss
@@ -0,0 +1,389 @@
+.dataset-item {
+    border-bottom: 1px dotted $genericBorderColor;
+    padding-bottom: 20px;
+    margin-bottom: 20px;
+}
+
+@media (max-width: $screen-sm-max) {
+    .dataset-item {
+        word-wrap: break-word;
+    }
+}
+
+.dataset-item:last-of-type {
+    border-bottom: none;
+    margin-bottom: 0;
+    padding-bottom: 0;
+}
+
+.dataset-heading {
+    font-size: 16px;
+    margin-top: 0;
+    margin-bottom: 8px;
+    line-height: 1.3;
+}
+
+.dataset-heading a {
+    color: $listingHeadingTextColor;
+}
+
+.dataset-heading .label {
+    position: relative;
+    top: -1px;
+}
+
+.label-inverse {
+    background-color: $gray;
+}
+
+.dataset-private {
+    margin-right: 10px;
+    text-transform: uppercase;
+    .icon-lock {
+        width: 9px;
+    }
+    &.pull-right {
+        margin-right: 0;
+    }
+}
+
+.dataset-resources {
+    margin-top: 8px;
+}
+
+.dataset-resources li {
+    display: inline;
+}
+
+.dataset-resources li a {
+    background-color: $resourceFormatBackground;
+}
+
+.dataset-heading .popular {
+    top: 0;
+}
+
+// Resource List
+.resource-list {
+    @include list-unstyled;
+    padding-left: 0;
+    margin: -10px -10px 10px -10px;
+}
+
+.resource-item {
+    position: relative;
+    padding: 10px 10px 10px 60px;
+    margin-bottom: 0px;
+    @include border-radius(3px);
+    &:hover {
+        background-color: $layoutBackgroundColor;
+    }
+}
+
+.resource-item .heading {
+    color: $layoutBoldColor;
+    font-size: 14px;
+    font-weight: bold;
+}
+
+.resource-item .format-label {
+    position: absolute;
+    top: 10px;
+    left: 10px;
+}
+
+.resource-item .description {
+    font-size: 12px;
+    margin-bottom: 0;
+    min-height: 12px;
+}
+
+.resource-item .btn-group {
+    position: absolute;
+    top: calc($grid-gutter-width/2) - 6;
+    right: 10px;
+}
+
+@media (max-width: $screen-sm-max) {
+    .resource-item .btn-group {
+        display: none;
+    }
+}
+
+.resource-list.reordering {
+    .resource-item {
+        border: 1px solid $moduleHeadingBorderColor;
+        margin-bottom: 10px;
+        cursor: move;
+        .handle {
+            display: block;
+            position: absolute;
+            color: $moduleHeadingActionTextColor;
+            left: -31px;
+            top: 50%;
+            margin-top: -15px;
+            width: 30px;
+            height: 30px;
+            line-height: 30px;
+            text-align: center;
+            border: 1px solid $moduleHeadingBorderColor;
+            border-width: 1px 0 1px 1px;
+            background-color: $moduleBackgroundColor;
+            @include border-radius(20px 0 0 20px);
+            &:hover {
+                text-decoration: none;
+            }
+        }
+        &:hover .handle {
+            background-color: $layoutBackgroundColor;
+        }
+        &.ui-sortable-helper {
+            background-color: $layoutBackgroundColor;
+            border: 1px solid $layoutLinkColor;
+            .handle {
+                background-color: $layoutBackgroundColor;
+                border-color: $layoutLinkColor;
+                color: $navLinkColor;
+            }
+        }
+    }
+}
+
+.resource-item .handle {
+    display: none;
+}
+
+// Dataset Forms
+// Tag List
+.tag-list {
+    @include list-unstyled;
+    padding: 10px 10px 5px 10px;
+}
+
+.tag-list li {
+    display: inline-block;
+    margin-right: 5px;
+}
+
+.tag-list li:last-child {
+    margin-right: 0;
+}
+
+// Additional Info
+.additional-info td,
+.additional-info th {
+    width: 50%;
+}
+
+// FORMATS
+.label[data-format=html],
+.label[data-format*=html] {
+    background-color: #2E759E;
+}
+
+.label[data-format=json],
+.label[data-format*=json] {
+    background-color: #D63B00;
+}
+
+.label[data-format=xml],
+.label[data-format*=xml] {
+    background-color: #D63B00;
+}
+
+.label[data-format=text],
+.label[data-format*=text] {
+    background-color: #1A7EA3;
+}
+
+.label[data-format=csv],
+.label[data-format*=csv] {
+    background-color: #856A00;
+}
+
+.label[data-format=xls],
+.label[data-format*=xls] {
+    background-color: #207E42;
+}
+
+.label[data-format=zip],
+.label[data-format*=zip] {
+    background-color: #686868;
+}
+
+.label[data-format=api],
+.label[data-format*=api] {
+    background-color: #D22D81;
+}
+
+.label[data-format=pdf],
+.label[data-format*=pdf] {
+    background-color: #e0051e;
+}
+
+.label[data-format=rdf],
+.label[data-format*=rdf],
+.label[data-format*=nquad],
+.label[data-format*=ntriples],
+.label[data-format*=turtle] {
+    background-color: #0b4498;
+}
+
+// Views
+.view-list {
+    @include list-unstyled;
+    li {
+        position: relative;
+        margin-bottom: 10px;
+        a {
+            display: block;
+            min-height: 50px;
+            padding: 10px;
+            border: 1px solid $moduleHeadingBorderColor;
+            overflow: hidden;
+            @include border-radius(3px);
+            .icon {
+                float: left;
+                width: 50px;
+                height: 50px;
+                overflow: hidden;
+                margin-right: 10px;
+                color: $layoutTextColor;
+                background-color: $layoutBackgroundColor;
+                @include border-radius(3px);
+                i {
+                    display: block;
+                    text-align: center;
+                    font-size: 28px;
+                    line-height: 50px;
+                }
+            }
+            h3 {
+                font-weight: bold;
+                color: $layoutBoldColor;
+                font-weight: bold;
+                font-size: 16px;
+                margin: 0 0 3px 0;
+            }
+            p {
+                margin: 0;
+                overflow: hidden;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+                color: $layoutTextColor;
+            }
+            &.active,
+            &:hover {
+                text-decoration: none;
+                border-color: $layoutLinkColor;
+                .icon {
+                    background-color: $layoutLinkColor;
+                    color: $navActiveBackgroundColor;
+                }
+            }
+        }
+        .arrow {
+            position: absolute;
+            display: none;
+            border: 8px solid transparent;
+            border-top-color: $layoutLinkColor;
+            left: 50%;
+            bottom: -15px;
+            margin-left: -4px;
+        }
+        &.active {
+            a {
+                text-decoration: none;
+                border-color: $layoutLinkColor;
+                .icon {
+                    background-color: $layoutLinkColor;
+                    color: $navActiveBackgroundColor;
+                }
+            }
+            .arrow {
+                display: block;
+            }
+        }
+    }
+    &.stacked {
+        overflow-y: hidden;
+        overflow-x: auto;
+        height: 100px;
+        white-space: nowrap;
+        li {
+            display: inline-block;
+            width: 250px;
+            margin-right: 10px;
+            &:last-child {
+                margin-right: 0;
+            }
+        }
+        &::-webkit-scrollbar {
+            width: 7px;
+            height: 7px;
+        }
+        &::-webkit-scrollbar-track {
+            border-radius: 10px;
+            background-color: $navActiveBackgroundColor;
+        }
+        &::-webkit-scrollbar-thumb {
+            border-radius: 10px;
+            background-color: darken($navActiveBackgroundColor, 20%);
+            &:hover {
+                background-color: $layoutLinkColor;
+            }
+        }
+    }
+}
+
+.resource-view {
+    margin-top: 20px;
+}
+
+#activity-archive-notice {
+  clear: both;
+}
+
+/* diff styles */
+table.diff {
+  font-family:Courier;
+  border:medium;
+}
+.diff_header {
+  background-color:#e0e0e0;
+}
+td.diff_header {
+  text-align:right;
+}
+.diff_next {
+  background-color:#c0c0c0;
+}
+.diff_add {
+  background-color:#aaffaa;
+}
+.diff_chg {
+  background-color:#ffff77;
+}
+.diff_sub {
+  background-color:#ffaaaa;
+}
+// TRASH VIEW accordion
+// --------------------------------------------------
+.accordion-item {
+    background-color: $navActiveBackgroundColor;
+    cursor: pointer;
+    padding: 10px;
+    margin-bottom: 5px;
+    width: 100%;
+    text-align: left;
+    border: none;
+    outline: none;
+    transition: 0.4s;
+    &:hover {
+      background-color: darken($navActiveBackgroundColor, 10%);
+    }
+  }
+  .purge-all {
+    float: right;
+    margin-bottom: 15px;
+  }
diff --git a/ckanext/ubdc/public/base/scss/_dropdown.scss b/ckanext/ubdc/public/base/scss/_dropdown.scss
new file mode 100644
index 0000000..7a3e8a0
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_dropdown.scss
@@ -0,0 +1,15 @@
+// Allow the dropdown to work without JavaScript
+.dropdown:hover .dropdown-menu {
+    display: block;
+}
+
+// Default to normal dropdown behaviour when JavaScript is enabled
+.js .dropdown {
+    .dropdown-menu,
+    &:hover .dropdown-menu {
+        display: none;
+    }
+    &.open .dropdown-menu {
+        display: block;
+    }
+}
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/scss/_footer.scss b/ckanext/ubdc/public/base/scss/_footer.scss
new file mode 100644
index 0000000..f7cceb3
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_footer.scss
@@ -0,0 +1,196 @@
+.site-footer {
+    padding: 20px 0;
+    background: #fff;
+}
+
+.site-footer {
+    &__links {
+        display: flex;
+        color: $footerLinkColor;
+    }
+    &__col-2 {
+        h4 {
+            font-size: 1.375em;
+            color: $brandPrimary;
+            font-weight: 200;
+            padding: 0;
+            margin: 0;
+        }
+        display: flex;
+        flex-direction: column;
+        width: calc(20px + ((100% - 220px) / 12 * 2));
+        margin-right: 20px;
+        position: relative;
+        &:nth-child(5) {
+            width: calc(40px + ((100% - 220px) / 12 * 3));
+            margin-right: 20px;
+            position: relative;
+        }
+        &:nth-child(6) {
+            margin-right: 0;
+            width: calc(((100% - 220px) / 12 * 1));
+            margin-right: 20px;
+            position: relative;
+        }
+        ul {
+            list-style: none;
+            margin: 0;
+            padding: 20px 0 0;
+            li a {
+                display: block;
+                margin: 20px 0 0;
+                text-decoration: none;
+                color: #02152b;
+                text-transform: uppercase;
+                font-weight: 700;
+                &:hover {
+                    color: $brandPrimary;
+                }
+            }
+        }
+        .social {
+            display: block;
+            width: 105px;
+            h4 {
+                padding-bottom: 40px;
+            }
+            .icon {
+                float: left;
+                padding-left: 2px;
+                padding-bottom: 2px;
+                i {
+                    border: 3px solid #c1c6c8;
+                    border-radius: 100%;
+                    padding: 14px;
+                    height: 50px;
+                    width: 50px;
+                    font-size: 18px;
+                    color: #7c878d;
+                }
+                &:hover i {
+                    border-color: $brandPrimary;
+                    color: $brandPrimary;
+                }
+            }
+        }
+    }
+    &__social {
+        // Do not show in larger screen
+        display: none;
+    }
+}
+
+.footer-links {
+    h4 {
+        font-size: $font-size-large;
+        font-weight: 300;
+        color: $brandPrimary;
+        .social-icon {
+            border: 3px solid #c1c6c8;
+            border-radius: 100%;
+            padding: 10px;
+            display: inline-block;
+            width: 50px;
+            height: 50px;
+            position: relative;
+        }
+    }
+}
+
+.site-footer {
+    &__bottom {
+        border-top: 1px solid #edeced;
+        margin-top: 15px;
+        padding: 30px 0px;
+        font-weight: 700;
+        text-transform: uppercase;
+        font-size: 14px;
+        .warp {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+        }
+        ul {
+            list-style: none;
+            margin: 0;
+            padding: 0;
+            li {
+                display: inline-block;
+                a {
+                    color: #7c878d;
+                    text-decoration: none;
+                    &:hover {
+                        color: $brandPrimary;
+                    }
+                }
+                &::after {
+                    content: "|";
+                    margin: 0 4px;
+                    font-weight: 300;
+                }
+                &:last-child::after {
+                    content: "";
+                    margin: 0;
+                }
+            }
+        }
+        .attribution {
+            padding-top: 20px;
+            display: flex;
+            justify-content: space-between;
+        }
+    }
+}
+
+@media (max-width: $screen-sm-min) {
+    .site-footer {
+        all: unset;
+        .container {
+            display: flex;
+            justify-content: center;
+        }
+        &__links {
+            display: none;
+        }
+        // Small devices social icons
+        &__social {
+            display: block;
+            text-align: center;
+            padding: 20px 0;
+            h4 {
+                font-size: 1.375em;
+                color: $brandPrimary;
+                font-weight: 200;
+                padding: 10px 0;
+                margin: 0;
+            }
+            .icon {
+                float: left;
+                padding-left: 2px;
+                padding-bottom: 2px;
+                i {
+                    border: 3px solid #c1c6c8;
+                    border-radius: 100%;
+                    padding: 14px;
+                    height: 50px;
+                    width: 50px;
+                    font-size: 18px;
+                    color: #7c878d;
+                }
+                &:hover i {
+                    border-color: $brandPrimary;
+                    color: $brandPrimary;
+                }
+            }
+        }
+    }
+    .site-footer {
+        &__bottom {
+            .warp {
+                display: flex;
+                align-items: center;
+                flex-direction: column;
+            }
+        }
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_forms.scss b/ckanext/ubdc/public/base/scss/_forms.scss
new file mode 100644
index 0000000..cacd132
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_forms.scss
@@ -0,0 +1,756 @@
+.js .js-hide {
+    display: none;
+}
+
+.js .js-hide.active {
+    display: block;
+}
+
+.btn,
+label {
+    font-weight: bold;
+}
+
+.btn-rounded {
+    @include border-radius(100px);
+    padding-left: 15px;
+    padding-right: 15px;
+}
+
+label {
+    cursor: pointer;
+    font-size: 14px;
+}
+
+label:after {
+    content: ":";
+}
+
+label.radio:after,
+label.checkbox:after {
+    content: "";
+}
+
+.cr-controls-reset {
+    position: relative;
+    margin-left: initial;
+    margin-right: calc($grid-gutter-width/6);
+    top: 2px;
+}
+
+.checkbox {
+    input[type=checkbox] {
+        @extend .cr-controls-reset;
+    }
+}
+
+.radio {
+    input[type=radio] {
+        @extend .cr-controls-reset;
+    }
+}
+
+// input[type=radio],
+// input[type=checkbox] {
+//     position: relative;
+//     top: 7px;
+//     padding: 0;
+//     margin: 0;
+//     &.checkbox-onown {
+//         top: 0;
+//     }
+// }
+select {
+    padding: 4px;
+}
+
+textarea {
+    max-width: 100%;
+}
+
+.form-group .btn {
+    position: relative;
+    top: -2px;
+}
+
+.unselectable {
+    -moz-user-select: none;
+    -webkit-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}
+
+.checkbox,
+.radio {
+    @extend .unselectable;
+}
+
+.control-full input,
+.control-full select,
+.control-full textarea {
+    @include box-sizing(border-box);
+    height: auto;
+    width: 100%;
+}
+
+.control-large {
+    input {
+        @extend .input-lg;
+    }
+    .control-label {
+        font-size: $font-size-large;
+    }
+}
+
+.control-required {
+    color: $errorBorder;
+}
+
+.form-actions .control-required-message {
+    float: left;
+    margin-left: 20px;
+    margin-bottom: 0;
+    line-height: 30px;
+    &:first-child {
+        margin-left: 0;
+    }
+}
+
+.form-actions {
+  overflow: auto;
+}
+
+@media (min-width: $screen-sm-min) {
+    .form-actions {
+        text-align: right;
+    }
+}
+
+.form-actions .action-info {
+    line-height: 2;
+    text-align: left;
+    color: $formInfoText;
+    margin: 0;
+}
+
+@media (min-width: $screen-sm-min) {
+    .form-actions .action-info {
+        float: left;
+        width: 50%;
+        margin-right: calc($grid-gutter-width/2);
+    }
+}
+
+.form-actions .action-info.small {
+    font-size: 11px;
+    line-height: 1.2;
+}
+
+@media (max-width: $screen-sm-max) {
+    .form-actions .btn {
+        margin-top: 5px;
+    }
+}
+
+// Override the default form widths.
+// .form-horizontal .control-label {
+//     width: 120px;
+// }
+// @media (min-width: $screen-sm-min) {
+//     .form-horizontal .controls {
+//         margin-left: 130px;
+//     }
+// }
+.form-group .info-block {
+    position: relative;
+    display: block;
+    font-size: 11px;
+    color: $emptyTextColor;
+    line-height: 1.3;
+    margin-top: 6px;
+}
+
+.form-group .info-help {
+    padding: 6px 0;
+    &:before {
+        display: none;
+    }
+}
+
+.form-group .info-help-tight {
+    margin-top: -10px;
+}
+
+@media (min-width: $screen-md-min) {
+    .form-group .info-block {
+        padding: calc($grid-gutter-width/6) 0 calc($grid-gutter-width/6) calc($grid-gutter-width/3);
+    }
+    .form-group .info-inline {
+        margin-top: 0;
+        padding-bottom: 0;
+    }
+}
+
+form .control-medium .info-block.info-inline {
+    width: 165px;
+}
+
+.form-group .info-block:before {
+    font-size: 2.2em;
+    position: absolute;
+    left: 0;
+    top: 2px;
+}
+
+.form-group .info-inline:before {
+    top: 8px;
+}
+
+.info-block,
+.info-inline {
+    .icon-large {
+        float: left;
+        font-size: 22px;
+        margin-right: $gutterSmallX;
+    }
+}
+
+.form-group .info-block a {
+    color: $emptyTextColor;
+    text-decoration: underline;
+}
+
+// form .form-actions {
+//     padding-left: $gutterX;
+//     padding-right: $gutterX;
+// }
+.form-inline input {
+    padding-bottom: 9px;
+}
+
+.form-inline select {
+    margin-top: 0;
+}
+
+.form-inline .btn {
+    margin-left: 5px;
+}
+
+// Form Narrow
+.form-narrow label {
+    margin-bottom: 0;
+}
+
+.form-narrow select {
+    width: 100%;
+}
+
+.form-narrow .form-actions {
+    margin-left: -$gutterSmallX;
+    margin-right: -$gutterSmallX;
+    padding: 10px $gutterSmallX 0;
+}
+
+input[data-module="autocomplete"],
+select[data-module="autocomplete"] {
+    width: 100%;
+}
+
+// Inline Select Forms
+.form-select label {
+    margin-right: 5px;
+}
+
+// Single Field Inputs
+.simple-input label,
+.simple-input button {
+  display: none;
+}
+
+.simple-input .field {
+    position: relative;
+}
+
+.simple-input .field-bordered {
+    border-bottom: 1px dotted $genericBorderColor;
+}
+
+.simple-input .field input {
+    width: 100%;
+    height: auto; // margin: 0 -7px; // Pull input out into gutter
+    // padding: 7px 5px;
+}
+
+.simple-input .field .btn-search {
+    position: absolute;
+    display: block;
+    height: 17px;
+    width: 17px;
+    padding: 0;
+    top: 50%;
+    right: calc($grid-gutter-width/3);
+    margin-top: -10px;
+    background-color: transparent;
+    border: none;
+    color: #999;
+    @include transition(color 0.2s ease-in);
+    &:hover {
+        color: #000;
+    }
+}
+
+.editor textarea {
+    @include border-radius($inputBorderRadius $inputBorderRadius 0 0);
+    border-bottom: none;
+}
+
+.editor .editor-info-block {
+    @include border-radius(0 0 $inputBorderRadius $inputBorderRadius);
+    display: block;
+    float: none;
+    padding: 4px 10px;
+    background: #ebebeb;
+    width: auto;
+    border: 1px solid $inputBorder;
+    border-top: none;
+    font-size: 11px;
+    color: #282828;
+}
+
+.editor .editor-info-block a {
+    color: $layoutLinkColor;
+    text-decoration: none;
+}
+
+// Custom Key/Value input
+.control-custom {
+    font-size: 0; // Remove whitespace between fields.
+    .input-group {
+        margin-bottom: calc($grid-gutter-width/3);
+    }
+}
+
+.control-custom .checkbox {
+    display: inline-block;
+    margin: 2px 0 2px calc($grid-gutter-width/3);
+}
+
+.control-custom .checkbox input {
+    width: auto;
+}
+
+.control-custom.disabled label,
+.control-custom.disabled input {
+    color: $disabledCustomInputTextColor;
+    text-decoration: line-through;
+    text-shadow: none;
+}
+
+.control-custom.disabled input {
+    @include box-shadow(none);
+    background-color: $disabledCustomInputBackground;
+}
+
+.control-custom.disabled .checkbox {
+    color: $layoutTextColor;
+    text-decoration: none;
+}
+
+// JavaScript Enabled Remove Button
+.control-custom .checkbox.btn {
+    @include border-radius(15px);
+    position: relative;
+    top: 0;
+    left: 5px;
+    height: 1px;
+    width: 9px;
+    padding: 3px 8px;
+    line-height: 18px;
+}
+
+.control-custom .checkbox.btn span {
+    display: none;
+    width: 30px;
+}
+
+.control-custom .checkbox.btn:before {
+    position: relative;
+    top: 1px;
+    left: -1px;
+    color: #fff;
+}
+
+.control-custom .checkbox input {
+    display: none;
+}
+
+.control-custom.disabled .checkbox.btn {
+    @extend .btn-danger;
+}
+
+// Errors
+.alert-danger a {
+    color: $errorText;
+}
+
+.form-group.has-error input,
+.form-group.has-error select,
+.form-group.has-error textarea,
+.form-group.has-error .input-group .input-group-addon,
+.form-group.has-error .input-group .input-group-addon {
+    border-color: $errorBorder;
+}
+
+.form-group {
+    select,
+    .select2-container {
+        max-width: 100%;
+    }
+}
+
+.error-inline {
+    color: $errorText;
+    margin: calc($grid-gutter-width/3);
+}
+
+.error-block,
+.error-inline {
+    font-size: $font-size-small;
+}
+
+.error-block {
+    @include border-radius(0 0 $inputBorderRadius $inputBorderRadius);
+    display: block;
+    padding: 6px 8px 3px;
+    background: $errorBorder; // margin: -$inputBorderRadius 0 0;
+    color: $inputBackground;
+    width: auto;
+}
+
+.control-medium .error-block {
+    width: auto;
+}
+
+.control-full .error-block {
+    width: auto;
+}
+
+.form-group.has-error .input-group .error-block,
+.control-custom.error .error-block {
+    width: auto;
+}
+
+.control-custom.error .error-block {
+    width: auto;
+    @include border-radius($border-radius-small);
+}
+
+.control-select.error .error-block {
+    width: auto;
+}
+
+// Stages
+// Builds form stages out of an ordered list. The following CSS uses tag
+// selectors on the .active class to prevent the styles bleeding into the
+// anchor element which can also have an active class.
+.stages {
+    @include list-unstyled;
+    @include clearfix;
+    color: $stagesTextColor;
+    counter-reset: stage; // margin: -$gutterY -$gutterX $gutterY;
+    overflow: hidden;
+    margin-bottom: $grid-gutter-width;
+}
+
+.stages li {
+    @include box-sizing(border-box);
+    line-height: 27px;
+    counter-increment: stage;
+    width: 50%;
+    background-color: $stagesBackground;
+    float: left;
+    padding: 10px 20px;
+    position: relative;
+    z-index: 0;
+}
+
+.stages li:before {
+    @include border-radius(14px);
+    content: counter(stage);
+    display: inline-block;
+    width: 27px;
+    height: 27px;
+    margin-right: 5px;
+    font-weight: bold;
+    text-align: center;
+    color: $stagesCounterTextColor;
+    background-color: $stagesCounterBackground;
+    z-index: 1;
+}
+
+.stages li:after {
+    left: 0;
+    border: solid $stagesTransparentBackground;
+    content: " ";
+    height: 0;
+    width: 0;
+    position: absolute;
+    pointer-events: none;
+    border-top-color: $stagesBackground;
+    border-bottom-color: $stagesBackground;
+    border-width: 29px; // Needs to be an odd number
+    top: 50%;
+    margin-top: -29px;
+    margin-left: -30px;
+}
+
+.stages li.last {
+    position: relative;
+    right: -1px;
+}
+
+.stages li.last,
+.stages li.last .highlight {
+    @include border-radius(0 3px 0 0);
+}
+
+.stages li.first:after {
+    content: none;
+    border: none;
+}
+
+.stages li.active:after {
+    border-color: $stagesActiveTransparentBackground;
+    border-top-color: $stagesActiveBackground;
+    border-bottom-color: $stagesActiveBackground;
+}
+
+.stages li.complete:after {
+    border-color: $stagesCompleteTransparentBackground;
+    border-top-color: $stagesCompleteBackground;
+    border-bottom-color: $stagesCompleteBackground;
+}
+
+.stages.stage-3 li.complete:first-child:after {
+    content: none;
+}
+
+.stages li.active,
+.stages li.complete {
+    background: none;
+}
+
+.stages li.active:before {
+    color: $stagesCounterActiveTextColor;
+    background: $stagesCounterActiveBackground;
+}
+
+.stages li.complete:before {
+    color: $stagesCounterCompleteTextColor;
+    background: $stagesCounterCompleteBackground;
+}
+
+// Needs to style spa, button and a elements.
+.stages li .highlight {
+    display: block;
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    width: 100%;
+    padding: 10px 52px;
+    border: none;
+    text-align: left;
+    text-decoration: none;
+    line-height: 27px;
+    z-index: -1;
+}
+
+@media (max-width: $screen-sm-max) {
+    .stages li .highlight {
+        text-indent: -9999px;
+    }
+}
+
+.stages li.active .highlight {
+    color: $stagesActiveTextColor;
+    background: $stagesActiveBackground;
+}
+
+.stages li.complete .highlight {
+    color: $stagesCompleteTextColor;
+    background: $stagesCompleteBackground;
+}
+
+// Errors
+.alert> :last-child {
+    margin-bottom: 0;
+}
+
+// Slug Preview Field
+.slug-preview {
+    font-size: 14px;
+    line-height: 1.5;
+    margin-top: 5px;
+    margin-left: 10px;
+}
+
+.slug-preview-value {
+    background-color: #faedcf;
+    margin-right: 3px;
+}
+
+// Select2
+.select2-container .select2-choice input,
+.select2-container-multi .select2-choices .select2-search-field:first-child input {
+    font-size: 14px;
+}
+
+.select2-container-multi .select2-choices .select2-search-field input {
+    height: 29px;
+}
+
+.select2-container .select2-choice input,
+.select2-container-multi .select2-choices .select2-search-field:first-child input {
+    // Only apply if there are no other tags (ie. is the first child)
+    padding-left: 10px;
+}
+
+.select2-container {
+    margin-top: 1px;
+    margin-bottom: calc($grid-gutter-width/4);
+}
+
+.select2-container-multi {
+    margin-top: 0;
+}
+
+.select2-container-multi .select2-choices .select2-search-choice {
+    padding: 5px 8px 5px 22px;
+}
+
+.select2-container-multi.select2-container .select2-choices {
+    padding-top: 3px;
+    padding-bottom: 3px;
+}
+
+.select2-search-choice-close,
+.select2-container-multi .select2-search-choice-close {
+    top: 6px;
+    left: 5px;
+}
+
+.select2-container-multi .select2-choices {
+    @include border-radius(3px);
+    @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075));
+    $transition: border linear .2s,
+    box-shadow linear .2s;
+    @include transition($transition);
+    background-color: $inputBackground;
+    border: 1px solid $inputBorder;
+}
+
+.select2-container-active .select2-choices,
+.select2-container-multi.select2-container-active .select2-choices {
+    border-color: rgba(82, 168, 236, .8);
+    outline: 0;
+    outline: thin dotted \9;
+    /* IE6-9 */
+}
+
+.select2-container-multi .select2-drop {
+    margin-top: -2px;
+}
+
+.select2-container .select2-results li {
+    line-height: 18px;
+    padding-top: 4px;
+    padding-bottom: 4px;
+}
+
+.control-full .select2-container {
+    // Important is bad but select2 incorrectly calculates the width and sets it on the element@mixin 
+    // Commenting out, as I cannot reproduce this problem (SS)
+    //width: 520px !important;
+    max-width: 100%;
+}
+
+.form-group.has-error .select2-container {
+    input:focus,
+    select:focus,
+    textarea:focus {
+        @include box-shadow(none);
+    }
+}
+
+.js .image-upload {
+    #field-image-url {
+        padding-right: 90px;
+    }
+    #field-image-upload {
+        cursor: pointer;
+        position: absolute;
+        z-index: 1;
+        @include opacity(0);
+    }
+    .controls {
+        position: relative;
+    }
+    .btn {
+        position: relative;
+        top: 0;
+        margin-right: 10px;
+        &.hover {
+            color: $gray-dark;
+            text-decoration: none;
+            background-position: 0 -15px;
+            @include transition(background-position .1s linear);
+        }
+    }
+    .btn-remove-url {
+        position: absolute;
+        margin-right: 0;
+        top: calc($grid-gutter-width/5);
+        right: calc($grid-gutter-width/6);
+        padding: 0 12px;
+        @include border-radius(100px);
+        .icon-remove {
+            margin-right: 0;
+        }
+    }
+
+    .error-inline {
+      margin-top: 5px;
+      margin-left: 2px;
+      font-weight: bold;
+    }
+}
+
+.add-member-form .control-label {
+  display: block;
+}
+
+.add-member-or-wrap{
+  display: flex;
+  align-items: flex-end;
+  justify-content: center;
+  @media (max-width: $screen-sm-max){
+    margin-bottom: $grid-gutter-width;
+  }
+  @media (min-width: $screen-md-min){
+    min-height: $grid-gutter-width*3 + 10;
+  }
+}
+
+.add-member-or {
+    text-align: center;
+    text-transform: uppercase;
+    color: $gray-light;
+    font-weight: bold;
+}
+
+#recaptcha_table {
+    table-layout: inherit;
+    line-height: 1;
+}
diff --git a/ckanext/ubdc/public/base/scss/_group.scss b/ckanext/ubdc/public/base/scss/_group.scss
new file mode 100644
index 0000000..560a227
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_group.scss
@@ -0,0 +1,35 @@
+.group .media-vertical .image {
+    margin: 0 -5px 5px;
+}
+
+// Group List
+// A group item summary plus a list of datasets belonging to the group.
+// TODO: This should really be on the parent.
+.group-list:nth-child(odd) {
+    clear: left;
+}
+
+.group-list .module-heading {
+    padding-top: 15px;
+    padding-bottom: 15px;
+}
+
+.group-list .dataset-content {
+    min-height: 54px;
+}
+
+.group-list .module-heading h3 {
+    margin-bottom: 2px;
+}
+
+.group-list .module-heading h3 a {
+    color: $listingHeadingTextColor;
+}
+
+.group-list .module-heading .media-image {
+    overflow: hidden;
+    max-height: 60px;
+    img {
+        max-width: 85px;
+    }
+}
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/scss/_homepage.scss b/ckanext/ubdc/public/base/scss/_homepage.scss
new file mode 100644
index 0000000..9d72583
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_homepage.scss
@@ -0,0 +1,391 @@
+.homepage {
+    .btn {
+        padding: 15px 30px;
+    }
+    .hero {
+        min-height: 505px;
+        background: url("#{$imagePath}/hero.png");
+        background-repeat: no-repeat;
+        -webkit-background-size: cover;
+        -moz-background-size: cover;
+        -o-background-size: cover;
+        background-size: cover;
+        background-repeat: no-repeat;
+        display: flex;
+        align-items: center;
+        .wrap {
+            display: flex;
+            justify-content: center;
+            .search-form {
+                width: 60%;
+                button {
+                    background-color: #05011f;
+                    top: 0;
+                    right: 0;
+                    margin-top: 0;
+                    padding: 28px 15px;
+                    display: flex;
+                    align-items: center;
+                }
+                border: 0;
+            }
+        }
+    }
+
+    .newsletter {
+        background: #05011f;
+        color: #fff;
+        padding: 78px 0px;
+        .wrap {
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            div {
+                &:nth-child(2) {
+                    width: 40%;
+                }
+                h5 {
+                    font-size: 1.375em;
+                }
+                h1,
+                h5,
+                p {
+                    font-weight: 300;
+                }
+            }
+        }
+    }
+
+    .stats {
+        background: #fff;
+        padding: 60px 0px;
+
+        .wrap .row {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+        }
+        .stat-number {
+            font-size: 42px;
+            font-weight: 600;
+            margin: 0;
+            color: #000000;
+        }
+        .stat-label {
+            text-transform: uppercase;
+            font-size: 16px;
+            font-weight: 700;
+        }
+
+        .title {
+            border-right: 1px solid #cccccc;
+            padding-right: 20px;
+            h4 {
+                font-weight: 700;
+                font-size: 16px;
+                padding: 0;
+                margin: 0;
+                text-align: right;
+            }
+        }
+    }
+
+    .popular-dataset {
+        background-image: url("#{$imagePath}/popular-dataset-bg.png");
+        background-repeat: no-repeat;
+        background-position: 0 30px;
+        background-color: #edeced;
+        .col-md-4 {
+            &:nth-child(1) {
+                .icon {
+                    background: #bfd22b;
+                }
+                .item {
+                    border-color: #bfd22b;
+                }
+            }
+            &:nth-child(2) {
+                .icon {
+                    background: #8869ae;
+                }
+                .item {
+                    border-color: #8869ae;
+                }
+            }
+            &:nth-child(3) {
+                .icon {
+                    background: #00b3dc;
+                }
+                .item {
+                    border-color: #00b3dc;
+                }
+            }
+        }
+        .title {
+            display: flex;
+            justify-content: center;
+            position: relative;
+            font-weight: 700;
+            font-size: 23px;
+            color: #000000;
+            text-transform: uppercase;
+            padding-top: 70px;
+            padding-bottom: 70px;
+            h3 {
+                font-size: 23px;
+            }
+        }
+        .icon {
+            position: absolute;
+            top: -25px;
+            left: 30px;
+            background: #bfd22b;
+            padding: 10px;
+            border-radius: 50%;
+            height: 50px;
+            width: 50px;
+            display: flex;
+            justify-content: center;
+            img {
+                color: #fff;
+                width: 20px;
+            }
+        }
+        .item {
+            a {
+                color: #02152b;
+                font-size: 24px;
+                padding-bottom: 11px;
+            }
+            p {
+                padding-top: 12px;
+            }
+            font-weight: 400;
+            font-size: 16px;
+            background: #fff;
+            border-top: 3px solid;
+            padding: 30px;
+            border-color: #8869ae;
+        }
+        .more {
+            text-align: center;
+            padding: 30px;
+            a {
+                color: #000000;
+                font-size: 23px;
+                padding-bottom: 11px;
+            }
+        }
+    }
+    .themes {
+        .title {
+            display: flex;
+            justify-content: center;
+            position: relative;
+            font-weight: 700;
+            color: #000000;
+            text-transform: uppercase;
+            padding-top: 70px;
+            padding-bottom: 50px;
+            h3 {
+                font-size: 23px;
+            }
+        }
+        .col {
+            padding: 10px;
+            .item {
+                padding: 20px 20px 20px 0;
+                background: #edeced;
+                .media {
+                    .btn-primary {
+                        border: 2px solid #f37021;
+                        box-shadow: -2px 2px 2px rgba(0, 0, 0, 0.2);
+                        border-radius: 5px;
+                    }
+
+                    .count {
+                        font-weight: 700;
+                        font-size: 16px;
+                        text-transform: uppercase;
+                        position: absolute;
+                        left: 10px;
+                        top: 10px;
+                        background-color: rgba(54, 2, 51, 0.7);
+                        color: #fff;
+                        padding: 4px 10px;
+                        border-radius: 5px;
+                    }
+                    img {
+                        width: 180px;
+                    }
+                }
+            }
+            &:nth-child(-n + 3) {
+                .item {
+                    padding: 20px 0px 20px 20px;
+                    .media {
+                        .count {
+                            position: absolute;
+                            right: 10px;
+                            background-color: rgba(54, 2, 51, 0.7);
+                            top: 10px;
+                            left: unset;
+                            color: #fff;
+                            padding: 4px 10px;
+                            border-radius: 5px;
+                            img {
+                                width: 180px;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        .more {
+            text-align: center;
+            padding: 30px;
+            a {
+                color: #000000;
+                font-size: 23px;
+                padding-bottom: 11px;
+            }
+        }
+    }
+
+    .providers {
+        background: #00162c;
+        h2 {
+            color: #fff;
+            text-align: center;
+            padding: 30px 0;
+            font-weight: 700;
+            font-size: 23px;
+        }
+        .logo-grid {
+            display: flex;
+            flex-wrap: wrap;
+            align-items: center;
+            align-content: center;
+            &__item {
+                padding: 15px;
+                width: 180px;
+                margin: 0 auto;
+                text-align: center;
+                img {
+                    filter: grayscale(100%) contrast(0.3);
+                    max-width: 100%;
+                    &:hover {
+                        filter: grayscale(0%) contrast(1);
+                    }
+                }
+            }
+        }
+        .more {
+            text-align: center;
+            padding: 30px;
+            a {
+                color: #fff;
+                font-size: 23px;
+                padding-bottom: 11px;
+            }
+        }
+    }
+    .features {
+        h4 {
+            font-weight: 600;
+            font-size: 18px;
+            color: #000000;
+        }
+        font-size: 16px;
+        padding: 55px 0;
+    }
+
+    .funding {
+        border-top: 1px solid #edeced;
+        padding: 42px 0;
+        h4 {
+            font-weight: 700;
+            font-size: 16px;
+            padding-right: 80px;
+            border-right: 1px solid #cccccc;
+        }
+        .wrap {
+            margin: auto;
+            display: flex;
+            justify-content: center;
+        }
+        .logo-grid {
+            padding-left: 40px;
+            display: flex;
+            &__item {
+                padding-right: 20px;
+                width: 245px;
+                margin: 0 auto;
+                text-align: center;
+                img {
+                    max-width: 100%;
+                }
+            }
+        }
+    }
+}
+
+@media (max-width: $screen-md-min) {
+    .homepage {
+        .hero {
+            .container {
+                width: 100%;
+            }
+        }
+        .newsletter {
+            .wrap {
+                flex-direction: column;
+                div {
+                    &:nth-child(2) {
+                        width: 80%;
+                        text-align: center;
+                        margin-bottom: 20px;
+                    }
+                }
+            }
+        }
+        .stats {
+            .stat-number {
+                font-size: 20px;
+            }
+            .stat-label {
+                font-size: 14px;
+            }
+        }
+
+        .popular-dataset {
+            .col-md-4 {
+                margin-bottom: 60px;
+                .icon {
+                    left: 43%;
+                }
+            }
+        }
+
+        .features {
+            .col-md-4 {
+                margin-bottom: 20px;
+            }
+        }
+
+        .funding {
+            .logo-grid {
+                flex-direction: column;
+                img {
+                    padding: 10px;
+                }
+            }
+        }
+    }
+}
+
+@media (max-width: $screen-sm-min) {
+    .homepage .hero .wrap .search-form {
+        width: 100%;
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_icons.scss b/ckanext/ubdc/public/base/scss/_icons.scss
new file mode 100644
index 0000000..391b2bc
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_icons.scss
@@ -0,0 +1,432 @@
+
+@use "sass:map";
+$small: 16px;
+$medium: 17px;
+$large: 20px;
+$huge: 25px;
+
+$icon-position: (
+ "smallX": $small,
+ "smallY": $small,
+ "smallOffsetX": $small,
+ "smallOffsetY": 0,
+ "mediumX": $medium,
+ "mediumY": $medium,
+ "mediumOffsetX": - $medium,
+ "mediumOffsetY": - $medium,
+ "largeX": $large,
+ "largeY": $large,
+ "largeOffsetX": -$large,
+ "largeOffsetY": -$small - $medium,
+ "hugeX": 25px,
+ "hugeY": 25px,
+ "hugeOffsetX": -$huge,
+ "hugeOffsetY": -$small - $medium - $large,
+ "formatMediumX": 32px,
+ "formatMediumY": 35px,
+ "formatMediumOffsetX": -32px,
+ "formatMediumOffsetY": -62px,
+ "resourceIconX": 60px,
+ "resourceIconY": 65px,
+ "resourceIconOffsetX": -20px,
+ "resourceIconOffsetY": -220px,
+);
+
+@mixin ckan-icon-background-position($offset, $size) {
+  $w: map-get($icon-position, "#{$size}X");
+  $h: map-get($icon-position, "#{$size}Y");
+  $x: map-get($icon-position, "#{$size}OffsetX");
+  $y: map-get($icon-position, "#{$size}OffsetY");
+  width: $w;
+  height: $h;
+  background-position: ($x * $offset) $y;
+}
+
+@mixin ckan-resource-icon-bg-pos($offset, $size) {
+  $w: map-get($icon-position, "#{$size}X");
+  $h: map-get($icon-position, "#{$size}Y");
+  $x: map-get($icon-position, "#{$size}OffsetX");
+  $y: map-get($icon-position, "#{$size}OffsetY");
+  width: $w;
+  height: $h;
+  background-position: ($x + -100 * $offset) $y;
+  transform: scale(0.53);
+  margin: -14px 0 0 -14px;
+}
+
+// SMALL
+.ckan-icon-fb {
+    @include ckan-icon-background-position(0,
+    "small")
+}
+
+.ckan-icon-gplus {
+    @include ckan-icon-background-position(1,
+    "small")
+}
+
+.ckan-icon-twitter {
+    @include ckan-icon-background-position(2,
+    "small")
+}
+
+.ckan-icon-email {
+    @include ckan-icon-background-position(3,
+    "small")
+}
+
+.ckan-icon-share {
+    @include ckan-icon-background-position(4,
+    "small")
+}
+
+.ckan-icon-feed {
+    @include ckan-icon-background-position(5,
+    "small")
+}
+
+.ckan-icon-calendar {
+    @include ckan-icon-background-position(6,
+    "small")
+}
+
+.ckan-icon-file {
+    @include ckan-icon-background-position(7,
+    "small")
+}
+
+.ckan-icon-lock {
+    @include ckan-icon-background-position(8,
+    "small")
+}
+
+.ckan-icon-link-file {
+    @include ckan-icon-background-position(9,
+    "small")
+}
+
+.ckan-icon-link-plugin {
+    @include ckan-icon-background-position(10,
+    "small")
+}
+
+.ckan-icon-upload-file {
+    @include ckan-icon-background-position(11,
+    "small")
+}
+
+.ckan-icon-callout {
+    @include ckan-icon-background-position(12,
+    "small")
+}
+
+// MEDIUM
+.ckan-icon-circle-cross {
+    @include ckan-icon-background-position(0,
+    "medium")
+}
+
+.ckan-icon-circle-add {
+    @include ckan-icon-background-position(1,
+    "medium")
+}
+
+.ckan-icon-flame {
+    @include ckan-icon-background-position(2,
+    "medium")
+}
+
+.ckan-icon-search {
+    @include ckan-icon-background-position(3,
+    "medium")
+}
+
+// LARGE
+.ckan-icon-large-lock {
+    @include ckan-icon-background-position(0,
+    "large")
+}
+
+.ckan-icon-photo {
+    @include ckan-icon-background-position(1,
+    "large")
+}
+
+.ckan-icon-add {
+    @include ckan-icon-background-position(2,
+    "large")
+}
+
+.ckan-icon-home {
+    @include ckan-icon-background-position(3,
+    "large")
+}
+
+.ckan-icon-rewind {
+    @include ckan-icon-background-position(4,
+    "large")
+}
+
+.ckan-icon-tools {
+    @include ckan-icon-background-position(5,
+    "large")
+}
+
+.ckan-icon-flag {
+    @include ckan-icon-background-position(6,
+    "large")
+}
+
+.ckan-icon-clipboard {
+    @include ckan-icon-background-position(7,
+    "large")
+}
+
+.ckan-icon-share {
+    @include ckan-icon-background-position(8,
+    "large")
+}
+
+.ckan-icon-info {
+    @include ckan-icon-background-position(9,
+    "large")
+}
+
+.ckan-icon-download {
+    @include ckan-icon-background-position(10,
+    "large")
+}
+
+.ckan-icon-star {
+    @include ckan-icon-background-position(11,
+    "large")
+}
+
+.ckan-icon-info-flat {
+    @include ckan-icon-background-position(12,
+    "large")
+}
+
+.ckan-icon-tag {
+    @include ckan-icon-background-position(13,
+    "large")
+}
+
+.ckan-icon-plus {
+    @include ckan-icon-background-position(14,
+    "large");
+    width: 16px;
+}
+
+.ckan-icon-head {
+    @include ckan-icon-background-position(15,
+    "large")
+}
+
+.ckan-icon-arrow-e {
+    @include ckan-icon-background-position(16,
+    "large");
+    width: 16px;
+}
+
+.ckan-icon-bookmark {
+    @include ckan-icon-background-position(0,
+    "huge");
+}
+
+// RESOURCE FORMAT ICONS
+.format-label {
+    @extend .ckan-icon;
+    text-indent: -900em;
+    background: url("#{$imagePath}/sprite-resource-icons.png") no-repeat 0 0;
+}
+
+.format-label {
+    @include ckan-resource-icon-bg-pos(17,
+    "resourceIcon");
+}
+
+.format-label[data-format=html],
+.format-label[data-format*=html] {
+    @include ckan-resource-icon-bg-pos(1,
+    "resourceIcon");
+}
+
+.format-label[data-format=json],
+.format-label[data-format*=json] {
+    @include ckan-resource-icon-bg-pos(2,
+    "resourceIcon");
+}
+
+.format-label[data-format=xml],
+.format-label[data-format*=xml] {
+    @include ckan-resource-icon-bg-pos(3,
+    "resourceIcon");
+}
+
+.format-label[data-format=txt],
+.format-label[data-format*=txt] {
+    @include ckan-resource-icon-bg-pos(4,
+    "resourceIcon");
+}
+
+.format-label[data-format=doc],
+.format-label[data-format*=doc],
+.format-label[data-format=docx],
+.format-label[data-format*=docx] {
+    @include ckan-resource-icon-bg-pos(5,
+    "resourceIcon");
+}
+
+.format-label[data-format=odt],
+.format-label[data-format*=odt] {
+    @include ckan-resource-icon-bg-pos(6,
+    "resourceIcon");
+}
+
+.format-label[data-format=csv],
+.format-label[data-format*=csv] {
+    @include ckan-resource-icon-bg-pos(7,
+    "resourceIcon");
+}
+
+.format-label[data-format=xls],
+.format-label[data-format*=xls] {
+    @include ckan-resource-icon-bg-pos(8,
+    "resourceIcon");
+}
+
+.format-label[data-format=zip],
+.format-label[data-format*=zip] {
+    @include ckan-resource-icon-bg-pos(9,
+    "resourceIcon");
+}
+
+.format-label[data-format=api],
+.format-label[data-format*=api] {
+    @include ckan-resource-icon-bg-pos(10,
+    "resourceIcon");
+}
+
+.format-label[data-format=pdf],
+.format-label[data-format*=pdf] {
+    @include ckan-resource-icon-bg-pos(11,
+    "resourceIcon");
+}
+
+.format-label[data-format=rdf],
+.format-label[data-format*=rdf] {
+    @include ckan-resource-icon-bg-pos(12,
+    "resourceIcon");
+}
+
+.format-label[data-format=wms],
+.format-label[data-format*=wms] {
+    @include ckan-resource-icon-bg-pos(13,
+    "resourceIcon");
+}
+
+.format-label[data-format=png],
+.format-label[data-format*=png] {
+    @include ckan-resource-icon-bg-pos(14,
+    "resourceIcon");
+}
+
+.format-label[data-format=jpg],
+.format-label[data-format*=jpg],
+.format-label[data-format=jpeg],
+.format-label[data-format*=jpeg] {
+    @include ckan-resource-icon-bg-pos(15,
+    "resourceIcon");
+}
+
+.format-label[data-format=gif],
+.format-label[data-format*=gif] {
+    @include ckan-resource-icon-bg-pos(16,
+    "resourceIcon");
+}
+
+.format-label[data-format=wfs],
+.format-label[data-format*=wfs] {
+    @include ckan-resource-icon-bg-pos(18,
+    "resourceIcon");
+}
+
+.format-label[data-format=gml],
+.format-label[data-format*=gml] {
+    @include ckan-resource-icon-bg-pos(19,
+    "resourceIcon");
+}
+
+.format-label[data-format=wmts],
+.format-label[data-format*=wmts] {
+    @include ckan-resource-icon-bg-pos(20,
+    "resourceIcon");
+}
+
+.format-label[data-format=kml],
+.format-label[data-format*=kml] {
+    @include ckan-resource-icon-bg-pos(21,
+    "resourceIcon");
+}
+
+.format-label[data-format=geo],
+.format-label[data-format*=geo] {
+    @include ckan-resource-icon-bg-pos(22,
+    "resourceIcon");
+}
+
+[class^="icon-"],
+[class*=" icon-"] {
+    display: inline-block;
+    text-align: right;
+    font-size: 14px;
+    line-height: 1;
+    width: 14px;
+}
+
+.btn,
+.nav,
+.module-heading,
+.dropdown {
+    [class^="icon-"],
+    [class*=" icon-"] {
+        margin-right: 4px;
+    }
+}
+
+.info-block {
+    [class^="icon-"],
+    [class*=" icon-"] {
+        float: left;
+        font-size: 28px;
+        width: 28px;
+        margin-right: 5px;
+        margin-top: 2px;
+    }
+}
+
+.breadcrumb .home .icon-home {
+    font-size: 24px;
+    width: 24px;
+    vertical-align: -1px;
+}
+
+.info-block-small {
+    [class^="icon-"],
+    [class*=" icon-"] {
+        font-size: 14px;
+        width: 14px;
+        margin-top: 1px;
+    }
+}
+
+.nav-tabs,
+.module-heading,
+.btn {
+    .fa {
+        &:last-child {
+            margin-right: 3px;
+        }
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_input-groups.scss b/ckanext/ubdc/public/base/scss/_input-groups.scss
new file mode 100644
index 0000000..b59f48b
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_input-groups.scss
@@ -0,0 +1,13 @@
+.input-group {
+  .form-control {
+    z-index: 0;
+  }
+}
+
+.input-group-btn {
+  &:last-child {
+    > .btn {
+      z-index: 0;
+    }
+  }
+}
diff --git a/ckanext/ubdc/public/base/scss/_layout.scss b/ckanext/ubdc/public/base/scss/_layout.scss
new file mode 100644
index 0000000..03b4d5c
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_layout.scss
@@ -0,0 +1,259 @@
+@use "sass:math";
+
+.wrapper {
+    @include clearfix();
+    @extend .box;
+    position: relative;
+    min-height: 300px;
+    background-color: #fff;
+    @media (min-width: $screen-sm-min) {
+        &:before {
+            content: '';
+            display: block;
+            position: absolute;
+            top: 0;
+            bottom: 0;
+            left: 0;
+            width: 25%;
+            border-right: 1px solid $genericBorderColor;
+            z-index: 1; // Fixes overlapping .secondary on the Resource view page
+        }
+        &.no-nav {
+            &:before {
+                display: none;
+            }
+            .module {
+                >.page-header {
+                    margin-top: 0;
+                }
+            }
+        }
+    }
+}
+
+// @media (min-width: $screen-md-min) {
+//   .wrapper {
+//     background-position:0px 0px;
+//   }
+// }
+// .wrapper.no-nav {
+//     background-image: none;
+// }
+[role=main],
+.main {
+    position: relative;
+    padding-bottom: 20px;
+}
+
+@media (min-width: $screen-sm-min) {
+    .main {
+        padding-top: 10px;
+        background: $layoutBackgroundColor url("#{$bgPath}");
+    }
+}
+
+[role=main],
+.main {
+    min-height: 350px;
+}
+
+.main:after,
+[role=main]:after {
+    bottom: 0;
+    border-top-width: 1px;
+}
+
+.main .primary {
+    position: relative;
+    float: right;
+    margin-left: 0; // Remove grid margin.
+}
+
+.main .secondary {
+    padding: 0;
+    z-index: 1;
+    padding-right: 1px;
+}
+
+
+/* Filters modal */
+
+.no-text .text {
+    display: none;
+}
+
+.js body.filters-modal {
+    overflow: hidden;
+}
+
+.show-filters.btn,
+.hide-filters {
+    display: none;
+}
+
+@media (max-width: $screen-xs-max) {
+    .wrapper {
+        border-width: 0;
+        @include box-shadow(0);
+        @include border-radius(0);
+    }
+    .js .main .secondary .filters {
+        display: none;
+        position: fixed;
+        overflow: auto;
+        top: 0;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        z-index: 1000;
+        padding: 10px;
+        background-color: rgb(0, 0, 0);
+        background-color: rgba(0, 0, 0, 0.50);
+    }
+    .js body.filters-modal .secondary .filters {
+        display: block;
+    }
+    .js .main .secondary .filters>div {
+        background-color: #fff;
+        -webkit-border-radius: 4px;
+        -moz-border-radius: 4px;
+        border-radius: 4px;
+        overflow: hidden;
+    }
+    .js .main .secondary .filters>div .module-footer {
+        display: none;
+    }
+    .js body.filters-modal .secondary .filters .hide-filters {
+        display: inline-block;
+        position: absolute;
+        top: 14px;
+        right: 17px;
+        opacity: 0.6;
+        i {
+            font-size: 18px;
+        }
+    }
+    .js .show-filters.btn {
+        display: inline-block;
+    }
+}
+
+// .primary> :last-child,
+// .secondary> :last-child {
+//     margin-bottom: 0;
+// }
+.primary {
+    .primary {
+        float: left;
+        margin-left: 0;
+        margin-bottom: 20px;
+        h1,
+        h2,
+        h3,
+        h4 {
+            &:first-child {
+                margin-top: 0;
+            }
+        }
+    }
+    .tertiary {
+        margin-bottom: 20px;
+    }
+}
+
+.context-info {
+    .module-content {
+        padding: 15px;
+    }
+    .image {
+        margin-bottom: 10px;
+        img,
+        a {
+            display: block;
+            width: 100%;
+            height: 100%;
+            @include border-radius(4px);
+        }
+    }
+    .description {
+        word-wrap: break-word;
+        word-break: break-all;
+        overflow: auto;
+    }
+    code {
+        display: block;
+        font-weight: normal;
+        padding: 0;
+        margin: 0;
+        overflow: auto;
+    }
+    h1.heading {
+        margin: 0 0 5px 0;
+        font-size: 18px;
+        line-height: 1.3;
+        @include break-word();
+    }
+    .info {
+        margin-top: 15px;
+        padding-top: 10px;
+        border-top: 1px dotted #DDD;
+        word-break: break-word;
+        dl dd {
+            margin-top: 3px;
+            margin-left: 0;
+        }
+    }
+    .nums {
+        @include clearfix;
+        margin-top: 15px;
+        padding-top: 10px;
+        padding-bottom: 0;
+        border-top: 1px dotted #DDD;
+        dl {
+            float: left;
+            width: 50%;
+            margin: 5px 0 0 0;
+            color: $layoutTextColor;
+            dt {
+                display: block;
+                font-size: 13px;
+                font-weight: 300;
+            }
+            dd {
+                display: block;
+                font-size: 30px;
+                font-weight: 700;
+                line-height: 36px;
+                margin-left: 0;
+                .smallest {
+                    font-size: 13px;
+                }
+                .smaller {
+                    font-size: 16px;
+                }
+                .small {
+                    font-size: 21px;
+                }
+            }
+        }
+    }
+    .follow_button {
+        margin: math.div($grid-gutter-width, 2) 0;
+    }
+    &.editing {
+        .module-heading {}
+        .module-content {
+            margin-top: 0;
+        }
+    }
+}
+
+.flash-messages {
+    .alert {
+        @include box-shadow(0 0 0 1px white);
+    }
+}
+
+.view-preview-container {
+  margin-top: 20px;
+}
diff --git a/ckanext/ubdc/public/base/scss/_masthead.scss b/ckanext/ubdc/public/base/scss/_masthead.scss
new file mode 100644
index 0000000..dc7adeb
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_masthead.scss
@@ -0,0 +1,306 @@
+@use "sass:math";
+
+$notificationsBg: #c9403a;
+.account-masthead {
+    @extend .clearfix;
+    min-height: 30px;
+    color: $mastheadTextColor;
+    background: darken($mastheadBackgroundColor, 10%) url("#{$bgPath}");
+    .account {
+        float: right;
+        ul {
+            @extend .clearfix;
+            li {
+                display: block;
+                float: left;
+                border-left: 1px solid darken($mastheadBackgroundColor, 15%);
+                a {
+                    display: block;
+                    color: mix($mastheadBackgroundColor, $mastheadLinkColor, 25%);
+                    font-size: 13px;
+                    font-weight: bold;
+                    padding: 0 10px;
+                    line-height: 31px;
+                    span.username,
+                    span.text {
+                        margin: 0 2px 0 4px;
+                    }
+                    span.text {
+                        position: absolute;
+                        top: -9999px;
+                        left: -9999px;
+                    }
+                    &:hover {
+                        color: mix($mastheadBackgroundColor, $mastheadLinkColor, 15%);
+                        background-color: darken($mastheadBackgroundColor, 15%);
+                        text-decoration: none;
+                    }
+                    &.sub {
+                        font-weight: 300;
+                    }
+                    .btn {
+                        vertical-align: 1px;
+                        margin-left: 3px;
+                    }
+                }
+            }
+        }
+        .notifications {
+            a {
+                span.badge {
+                    font-size: 12px;
+                    margin-left: 3px;
+                    padding: 1px 6px;
+                    background-color: darken($mastheadBackgroundColor, 15%);
+                    @include border-radius(4px);
+                    text-shadow: none;
+                    color: mix($mastheadBackgroundColor, $mastheadLinkColor, 25%);
+                }
+                &:hover span {
+                    color: $mastheadLinkColor;
+                    background-color: darken($mastheadBackgroundColor, 20%);
+                }
+            }
+            &.notifications-important a {
+                span.badge {
+                    color: $mastheadLinkColor;
+                    background-color: $notificationsBg;
+                }
+            }
+        }
+        &.authed {
+            .image {
+                padding: 0 6px;
+                img {
+                    @include border-radius(4px);
+                }
+            }
+        }
+    }
+}
+
+.masthead {
+    @include clearfix(); //min-height: 55px;
+    margin-bottom: initial;
+    padding: calc($grid-gutter-width/3) 0;
+    color: $mastheadTextColor;
+    background: $mastheadBackgroundColor url("#{$bgPath}");
+    .container {
+        position: relative;
+    }
+    a {
+        color: $mastheadLinkColor;
+    }
+    hgroup {
+        h1,
+        h2 {
+            float: left;
+            font-size: 30px;
+            line-height: 1.5;
+        }
+        h1 {
+            font-weight: 900;
+            letter-spacing: -1px;
+            margin: 3px 0;
+        }
+        h2 {
+            position: absolute;
+            bottom: -3px;
+            left: 0;
+            margin: 0;
+            font-size: 15px;
+            font-weight: normal;
+            line-height: 1.2;
+            white-space: nowrap;
+        }
+    }
+    .logo-container {
+        background: rgba(54, 2, 51, 0.7);
+        position: absolute;
+        border-radius: 100%;
+        top: -140px;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        min-width: 319px;
+        min-height: 320px;
+        .logo {
+            display: inline-block;
+            margin-top: 60px;
+            img {
+                max-height: 130px;
+            }
+        }
+    }
+    .small-logo {
+        min-width: 230px;
+        min-height: 230px;
+        .logo {
+            margin-top: 80px !important;
+            img {
+                max-height: 85px !important;
+            }
+        }
+    }
+
+    .navbar-collapse {
+        padding: math.div($grid-gutter-width, 3) 0;
+        .nav li a {
+            color: #fff !important;
+            position: relative;
+    
+            &:before {
+                transition: 300ms;
+                height: 4px;
+                content: "";
+                position: absolute;
+                background-color: #f37021;
+                width: 75%;
+                bottom: 0px;
+                opacity: 0;
+            }
+
+            &:hover:before {
+                bottom: 0px;
+                opacity: 1;
+            }
+        }
+    }
+    .section {
+        float: left;
+    }
+    .navigation {
+        &.section {
+            @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
+                float: right;
+            }
+        }
+        .nav-pills {
+            margin-bottom: 0;
+            li {
+                a:hover,
+                a:focus,
+                &.active a {
+                    background-color: darken($mastheadBackgroundColor, 10%);
+                }
+            }
+        }
+    }
+    .nav > li > a,
+    .nav > li > a:focus,
+    .nav > li > a:hover,
+    .nav > .active > a,
+    .nav > .active > a:hover,
+    .nav > .active > a:focus {
+        color: #fff;
+        text-shadow: none;
+    }
+    .site-search {
+        @media (min-width: $screen-md-min) {
+            margin-left: calc($grid-gutter-width/2);
+        }
+        margin: calc(math.div($grid-gutter-width, 6) - 1px) calc(math.div($grid-gutter-width, 3) - 2px)
+            calc(math.div($grid-gutter-width, 6) - 1px) 0;
+        input {
+            width: 40px;
+            opacity: 0;
+            padding: calc($grid-gutter-width/6) calc($grid-gutter-width/3);
+            -webkit-transition: width 0.4s ease-in-out;
+            transition: width 0.4s ease-in-out;
+            ~ .btn-search {
+                pointer-events: none;
+                cursor: default;
+            }
+            &:focus {
+                width: 200px;
+                opacity: 1;
+                ~ .btn-search {
+                    pointer-events: all !important;
+                }
+            }
+        }
+    }
+    .btn-navbar-btn,
+    .btn-navbar-btn:hover,
+    .btn-navbar-btn:focus,
+    .btn-navbar-btn:active,
+    .btn-navbar-btn.active,
+    .btn-navbar-btn.disabled,
+    .btn-navbar-btn[disabled] {
+        background-color: darken($mastheadBackgroundColor, 10%);
+        background-image: none;
+        border: none;
+        @include box-shadow(none);
+        text-shadow: none;
+        margin-top: 15px;
+        .icon-bar {
+            margin-right: 0;
+        }
+    }
+    .debug {
+        position: absolute;
+        top: 37px;
+        left: 10px;
+        color: rgba(255, 255, 255, 0.5);
+    }
+}
+
+@media (min-width: $screen-md-min) {
+    .masthead .navbar-collapse {
+        float: right;
+    }
+}
+
+@media (max-width: $screen-sm-max) {
+    .navbar-toggle {
+        margin-right: 0;
+    }
+    .masthead {
+        .section {
+            float: none;
+            .navbar-collapse {
+                margin-bottom: $gutterX;
+            }
+        }
+        .container {
+            padding-left: calc($grid-gutter-width/2);
+            padding-right: calc($grid-gutter-width/2);
+        }
+        .site-search {
+            display: none;
+        }
+
+
+        .logo-container {
+            background: rgba(54, 2, 51, 0.7);
+            position: absolute;
+            border-radius: 100%;
+            top: -80px;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            min-width: 200px;
+            min-height: 200px;
+            .logo {
+                display: inline-block;
+                margin-top: 20px;
+                img {
+                    max-height: 100px;
+                }
+            }
+        }
+
+
+    }
+}
+
+@media (max-width: $screen-xs-max) {
+    .masthead {
+        .navbar-collapse {
+            clear: both;
+            margin-left: 0;
+            margin-right: 0;
+        }
+
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_media.scss b/ckanext/ubdc/public/base/scss/_media.scss
new file mode 100644
index 0000000..ed52d03
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_media.scss
@@ -0,0 +1,150 @@
+// Banner
+.banner {
+    @include transform(rotate(45deg));
+    @include transform-origin(center, center);
+    position: absolute;
+    top: 15px;
+    right: -35px;
+    width: 80px;
+    color: $bannerTextColor;
+    background-color: $bannerBackgroundColor;
+    padding: 1px 20px;
+    font-size: 11px;
+    text-align: center;
+    text-transform: uppercase;
+}
+
+.media-grid {
+    @include list-unstyled;
+    @include clearfix;
+    padding-left: 0px;
+    min-height: 205px;
+    padding-top: calc($grid-gutter-width/2);
+    background: lighten($layoutBackgroundColor, 5%) url("#{$bgPath}");
+    border: 1px solid $moduleHeadingBorderColor;
+    border-width: 1px 0;
+}
+
+.media-item {
+    position: relative;
+    float: left;
+    width: 178px;
+    padding: calc($grid-gutter-width/2);
+    margin: 0 0 calc($grid-gutter-width/2) calc($grid-gutter-width/2);
+    background-color: white;
+    @include border-radius(3px);
+    span.count {
+        color: #999;
+    }
+    .media-image {
+        margin-bottom: 5px;
+    }
+    .media-edit {
+        opacity: 0;
+        position: absolute;
+        right: 15px;
+        bottom: 15px;
+        @include transition(opacity 0.2s ease-in);
+    }
+    &:hover {
+        z-index: 1;
+        .media-edit {
+            opacity: 1;
+        }
+    }
+}
+
+.media-view {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    border: 1px solid $moduleHeadingBorderColor;
+    overflow: hidden;
+    @include transition(all 0.2s ease-in);
+    @include border-radius(3px);
+    &:hover,
+    &.hovered {
+        border-color: $mastheadBackgroundColor;
+        @include box-shadow(0 0 0 4px rgba(0, 0, 0, 0.1));
+        .banner {
+            background-color: $bannerBackgroundColor;
+        }
+    }
+    span {
+        display: none;
+    }
+    .banner {
+        display: block;
+        background-color: darken($moduleHeadingBorderColor, 15%);
+        @include transition(background-color 0.2s ease-in);
+    }
+}
+
+.media-image {
+    @include border-radius(4px);
+    img {
+        min-width: 100%;
+    }
+}
+
+.media-heading {
+    font-size: 18px;
+    line-height: 1.3;
+    margin: 5px 0;
+    @include break-word();
+}
+
+.media-description {
+    word-wrap: break-word;
+    word-break: break-all;
+}
+
+// Overlay
+.media-overlay {
+    position: relative;
+    min-height: 35px; // Min height for the heading.
+}
+
+.media-overlay .media-heading {
+    position: absolute;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    padding: 12px 10px;
+    margin: 0;
+    background-color: #000;
+    background-color: rgba(0, 0, 0, 0.8);
+    font-size: 13px;
+    color: #fff;
+    z-index: 1;
+    @include border-radius(0 0 3px 3px);
+}
+
+.media-overlay .media-image {
+    float: none;
+    display: block;
+    margin-right: 0;
+}
+
+.media-item.is-expander {
+    .truncator-link {
+        @include transition(opacity 0.2s ease-in);
+        position: absolute;
+        z-index: 10;
+        left: 15px;
+        bottom: 15px;
+        opacity: 0;
+    }
+    &:hover {
+        padding-bottom: 35px;
+        .truncator-link {
+            opacity: 1;
+        }
+    }
+}
+
+.wide .media-item {
+    width: 186px;
+}
diff --git a/ckanext/ubdc/public/base/scss/_mixins.scss b/ckanext/ubdc/public/base/scss/_mixins.scss
new file mode 100644
index 0000000..a1eec7a
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_mixins.scss
@@ -0,0 +1,168 @@
+@mixin break-word {
+    -ms-word-break: break-all;
+    word-break: break-all;
+    /* Non standard for webkit */
+    word-break: break-word;
+    -webkit-hyphens: auto;
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    hyphens: auto;
+}
+
+@mixin border-radius($size) {
+    border-radius: $size;
+}
+
+@mixin transform ($args...) {
+    -webkit-transform: $args;
+    -moz-transform: $args;
+    -ms-transform: $args;
+    -o-transform: $args;
+    transform: $args;
+}
+
+@mixin transform-origin ($x, $y) {
+    -webkit-transform-origin: $x,$y ;
+    -moz-transform-origin: $x,$y;
+    -ms-transform-origin: $x,$y;
+    -o-transform-origin: $x,$y;
+    transform-origin: $x,$y;
+}
+// Allows use of rgba() in gradients. This will not provide a fallback for IE.
+@mixin rgba-vertial-gradient($startColor: #555, $endColor: #333) {
+    background-color: mix($startColor, $endColor, 60%);
+    background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
+    background-image: -ms-linear-gradient(top, $startColor, $endColor); // IE10
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
+    background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
+    background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10
+    background-image: linear-gradient(top, $startColor, $endColor); // The standard
+    background-repeat: repeat-x;
+}
+
+@mixin rgba-vertical-gradient-three-colors($startColor: #00b3ee, $midColor: #7a43b6, $colorStop: 50%, $endColor: #c3325f) {
+    background-color: mix($midColor, $endColor, 80%);
+    background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), color-stop($colorStop, $midColor), to($endColor));
+    background-image: -webkit-linear-gradient($startColor, $midColor $colorStop, $endColor);
+    background-image: -moz-linear-gradient(top, $startColor, $midColor $colorStop, $endColor);
+    background-image: -ms-linear-gradient($startColor, $midColor $colorStop, $endColor);
+    background-image: -o-linear-gradient($startColor, $midColor $colorStop, $endColor);
+    background-image: linear-gradient($startColor, $midColor $colorStop, $endColor);
+    background-repeat: no-repeat;
+}
+
+@mixin list-unstyled {
+    margin: 0;
+    list-style: none;
+}
+
+@mixin simple-item {
+    font-size: 12px;
+    line-height: calc(14em/12);
+    padding: 7px $gutterX;
+    border-bottom: 1px dotted $genericBorderColor;
+    &:last-of-type {
+        border-bottom: 0;
+    }
+}
+
+@mixin simple-list {
+    @include clearfix;
+    @include list-unstyled;
+    &>li {
+        @include simple-item;
+    }
+    .ckan-icon {
+        position: relative;
+        top: 0px;
+    }
+}
+@mixin ckan-icon {
+    //@extend ie7-restore-right-whitespace;
+    display: inline-block;
+    vertical-align: text-bottom;
+    position: relative;
+    top: 2px;
+    width: 16px;
+    height: 16px;
+    background-image: url("#{$imagePath}/sprite-ckan-icons.png");
+    background-repeat: no-repeat;
+    background-position: 16px 16px;
+}
+
+
+.tag {
+    display: inline-block;
+    margin-bottom: 4px;
+    color: $tabTextColor;
+    background-color: $tagBackgroundColor;
+    padding: 1px 10px;
+    border: 1px solid darken($tagBackgroundColor, 10%);
+    @include border-radius(100px);
+    @include box-shadow(inset 0 1px 0 lighten($tagBackgroundColor, 10%));
+}
+
+a.tag:hover {
+    text-decoration: none;
+    color: #fff;
+    background-color: $btnPrimaryBackground;
+    border: 1px solid darken($btnPrimaryBackground, 10%);
+    @include box-shadow(inset 0 1px 0 lighten($btnPrimaryBackground, 10%));
+}
+
+.pill {
+    display: inline-block;
+    background-color: $pillBackgroundColor;
+    color: $pillTextColor;
+    padding: 2px 10px 1px 10px;
+    margin-right: 5px;
+    font-weight: normal;
+    @include border-radius(100px);
+    a {
+        color: $pillTextColor;
+        &.remove {
+            font-size: 11px;
+        }
+    }
+}
+
+.list-unstyled  {
+  @include list-unstyled; 
+}
+
+
+.module-narrow .simple-list>li {
+    padding-left: $gutterSmallX;
+    padding-right: $gutterSmallX;
+    position: relative;
+}
+
+.listing li {
+    text-align: right; //overflow: hidden;
+    //white-space: nowrap;
+    //text-overflow: ellipsis;
+    margin-bottom: 5px;
+}
+
+.listing .key,
+.listing .value {}
+
+.listing .key {
+    clear: right;
+    font-weight: bold;
+}
+
+.js .tab-content {
+    display: none;
+}
+
+.js .tab-content.active {
+    display: block;
+}
+
+.box {
+    background-color: $body-bg;
+    border: 1px solid $layoutTrimBorderColor;
+    @include border-radius(4px);
+    @include box-shadow(0 0 0 4px rgba(0, 0, 0, 0.05));
+}
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/scss/_module.scss b/ckanext/ubdc/public/base/scss/_module.scss
new file mode 100644
index 0000000..dfbfa46
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_module.scss
@@ -0,0 +1,242 @@
+.module {
+    >.page-header {
+        margin-top: calc($grid-gutter-width/2);
+    }
+
+    > .module-content{
+        &:nth-child(2n){
+            padding-top: calc($grid-gutter-width/2);
+        }
+    }
+}
+
+.module-heading {
+    @include clearfix;
+    margin: 0;
+    padding: calc($grid-gutter-width/3) $gutterX;
+    font-size: $font-size-base;
+    line-height: 1.3;
+    background-color: $moduleHeadingBackgroundColor;
+    border-top: 1px solid $moduleHeadingBorderColor;
+    border-bottom: 1px solid $moduleHeadingBorderColor;
+}
+
+.module-content {
+    padding: $grid-gutter-width;
+
+    .add-to-group{
+      .btn-primary{
+        margin-bottom: $grid-gutter-width;
+      }
+    }
+}
+
+// @media (min-width: $screen-sm-min) {
+//     .span9 div.module-content {
+//         padding-left: 10px;
+//     }
+// }
+// .module-content:first-child {
+//     // margin-top: 0;
+//     padding-top: $gutterY;
+// }
+// .module-content:last-child {
+//     // margin-bottom: 0;
+//     padding-bottom: $gutterY;
+// }
+// .module-content> :last-child {
+//     // margin-bottom: 0;
+// }
+
+.module:first-child .module-heading {
+    @include border-radius(3px 0 0 0);
+    border-top-width: 0;
+}
+
+// .module:last-child {
+//     margin-bottom: 20px;
+// }
+.module-footer {
+    padding: 7px $gutterX 7px;
+    margin: 0;
+    border-top: 1px dotted $genericBorderColor;
+}
+
+.module .read-more {
+    font-weight: bold;
+    color: $layoutBoldColor;
+}
+
+.pagination-wrapper{
+    text-align: center;
+    border-top: 1px solid $hr-border;
+    padding-top: calc($grid-gutter-width/3);
+}
+
+// .module-content .pagination {
+//     margin-left: -25px;
+//     margin-right: -25px;
+//     margin-bottom: -20px;
+// }
+
+// .module @mixin pagination>ul {
+//     @include border-radius(0);
+//     @include box-shadow(none);
+//     border: 0;
+// }
+
+// .module .pagination li a {
+//     border-top: 1px solid $moduleHeadingBorderColor;
+//     ;
+//     border-bottom: 1px solid $moduleHeadingBorderColor;
+//     ;
+//     padding-top: 7px;
+//     padding-bottom: 7px;
+// }
+
+// .module .pagination li:first-child a,
+// .module .pagination li:last-child a {
+//     @include border-radius(0);
+// }
+
+// .module-content-shallow {
+//     padding: 0;
+//     margin-top: 10px;
+//     padding-bottom: 10px;
+// }
+
+.module h1 {
+    margin-top: 0;
+    margin-bottom: 20px;
+}
+
+// Module Shallow
+.module-shallow .module-content {
+    padding: 10px;
+    margin: 0;
+}
+
+.module-shallow .module-tags {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+.module-shallow .module-content:first-child {
+    padding-top: 10px;
+}
+
+.module-shallow .module-content:last-child {
+    padding-bottom: 10px;
+}
+
+// Secondary column specific
+.module-narrow {
+    .module-heading,
+    .module-content,
+    .module-footer {
+        padding-left: $gutterSmallX;
+        padding-right: $gutterSmallX;
+    }
+}
+
+// Module Grid
+.module-grid {
+    @include list-unstyled;
+    @extend .media-grid; // @extend media-wide;
+}
+
+.module-item {
+    @extend .media-item;
+    @include make-md-column(6);
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-right: 50px;
+    overflow: hidden;
+    position: relative;
+}
+
+.module-item.first {
+    clear: left;
+}
+
+// GROUP
+.group .content img {
+    margin: 0 -5px 5px;
+    max-width: initial;
+}
+
+.group .content h3 {
+    font-size: 14px;
+    line-height: 1.3;
+}
+
+.group-listing {
+    margin-left: -20px; // Same as .row
+}
+
+// PREVIEW
+.ckanext-datapreview {
+    position: relative;
+    clear: both;
+    padding-top: 15px;
+    margin-top: 0;
+    &>iframe {
+        min-height: 650px;
+    }
+    &>img {
+        max-height: 500px;
+        max-width: 100%;
+        overflow: hidden;
+    }
+}
+
+.package-info {
+    h4 {
+        margin-bottom: 10px;
+    }
+}
+
+.module-resource {
+    z-index: 5; // Fixes overlapping .secondary on the Resource view page
+    position: relative; // Fixes overlapping .secondary on the Resource view page
+    background-color: $layoutTrimBackgroundColor;
+    border-bottom: 1px solid $genericBorderColor;
+    margin-top: 0;
+    margin-bottom: 0;
+    @include border-radius(3px 3px 0 0);
+    .actions {
+        position: relative;
+        float: right;
+        top: -10px;
+        right: -15px;
+    }
+}
+
+.module .module-tags {
+    padding-bottom: 8px;
+}
+
+.secondary,
+.primary {
+    .module:first-child {
+        // margin-top: 0;
+    }
+}
+
+.no-nav .module:last-child {
+    margin-top: 0;
+}
+
+.module-image {
+    float: left;
+    width: 50px;
+    height: 50px;
+    line-height: 50px;
+    text-align: center;
+    margin-right: 15px;
+    img {
+        max-width: 50px;
+        max-height: 50px;
+        vertical-align: middle;
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_nav.scss b/ckanext/ubdc/public/base/scss/_nav.scss
new file mode 100644
index 0000000..82bf8e4
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_nav.scss
@@ -0,0 +1,193 @@
+.nav-simple,
+.nav-aside {
+    @include simple-list; // Adds border and padding.
+    padding-bottom: 0;
+}
+
+.nav-aside {
+    border-top: 1px dotted #DDD;
+    border-bottom: 1px dotted #DDD;
+    margin-bottom: 15px;
+}
+
+.nav-item>a,
+.nav-aside li a {
+    color: $navLinkColor;
+    font-size: $font-size-base;
+    line-height: $line-height-base;
+    margin: -7px (-$gutterX);
+    padding: 7px ($gutterX);
+}
+
+.nav-item.active,
+.nav-aside li.active {
+    background-color: $navActiveBackgroundColor;
+}
+
+.nav-item.active>a,
+.nav-aside li.active a {
+    position: relative;
+    color: $navItemActiveTextColor;
+    background-color: $navItemActiveBackgroundColor;
+    &:hover {
+        color: $navItemActiveTextColor;
+        background-color: $navItemActiveBackgroundColor;
+    }
+}
+
+@media (min-width: $screen-sm-min) {
+    .nav-item.active>a:before,
+    .nav-aside li.active a:before {
+        content: ' ';
+        position: absolute;
+        border: ($navItemActiveArrowSize*3 + 2) solid transparent;
+        border-right: none;
+        border-left-color: $navItemActiveBackgroundColor;
+        border-left-width: $navItemActiveArrowSize;
+        top: 0;
+        bottom: 0;
+        right: -$navItemActiveArrowSize;
+        width: $navItemActiveArrowSize;
+        height: 34px;
+        // background-image: url("${imagePath}/nav-active.png?1");
+    }
+}
+
+.nav-pills>li {
+    float: none;
+    @media (min-width: $grid-float-breakpoint) {
+        float: left;
+    }
+}
+
+.nav-item.active>a span,
+.nav-aside li.active a span {
+    white-space: nowrap;
+    overflow: hidden;
+    // display: block;
+}
+
+.module-narrow .nav-item>a,
+.module-narrow .nav-aside li a {
+    padding-left: $gutterSmallX;
+    padding-right: $gutterSmallX;
+    position: relative;
+}
+
+.module-narrow .nav-item.image,
+.module-narrow .nav-aside li.image {
+    position: relative;
+}
+
+.module-narrow .nav-item.image>a,
+.module-narrow .nav-aside li.image a {
+    padding-left: $gutterSmallX + 27;
+    padding-right: $gutterSmallX + 27;
+}
+
+.module-narrow .nav-item.image>img,
+.module-narrow .nav-aside li.image img {
+    position: absolute;
+    top: 50%;
+    left: $gutterSmallX;
+    width: 20px;
+    height: 20px;
+    margin-top: -10px;
+    z-index: 2;
+}
+
+// FACET NAVIGATION
+.nav-facet .nav-item>a:hover:after,
+.nav-facet .nav-item.active>a:after {
+    @include ckan-icon;
+    content: "";
+    position: absolute;
+    top: 50%;
+    right: 5px;
+    margin-top: -8px;
+}
+
+.nav-facet .nav-item>a:hover:after{
+    @extend .ckan-icon-circle-add;
+}
+.nav-facet .nav-item.active>a:hover:after{
+    @extend .ckan-icon-circle-cross;
+}
+
+.nav-facet .nav-item.active>a:after {
+    @extend .ckan-icon-circle-cross;
+    right: 3px;
+}
+
+.user-list {
+    @include list-unstyled;
+    li {
+        margin: 0 0 10px 0;
+    }
+    .user-image {
+        margin-right: 3px;
+        margin-bottom: 3px;
+        @include border-radius(100px);
+    }
+}
+
+.nav-facet-tertiary {
+    margin: 10px 0;
+    .module-heading {
+        margin-bottom: 5px;
+        padding: 8px 12px;
+        border-bottom-width: 0;
+        @include border-radius(5px);
+        i {
+            display: none;
+        }
+    }
+    .module-footer {
+        padding: 8px 12px;
+        border-top-width: 0;
+        a {
+            font-weight: normal;
+            color: #8C8C8C;
+        }
+    }
+    .nav {
+        margin-bottom: 0;
+    }
+    .module-content.empty {
+        padding: 8px 12px;
+        margin-top: 0;
+    }
+    .nav li.active {
+        position: relative;
+    }
+    .nav li.active>a:hover:after,
+    .nav li.active>a:after {
+        @include ckan-icon;
+        @extend .ckan-icon-circle-cross;
+        content: "";
+        position: absolute;
+        top: 50%;
+        right: 5px;
+        margin-top: -8px;
+    }
+}
+
+.nav-simple>.nav-btn {
+    padding-left: 0;
+    padding-right: 0;
+    text-align: center;
+    .btn {
+        display: inline-block;
+    }
+}
+
+// STACKED NAV
+// -----------
+
+// Stacked tabs and pills
+.nav-stacked > li {
+    float: none;
+}
+.nav-stacked > li > a {
+    margin-right: 0; // no need for the gap between nav items
+}
diff --git a/ckanext/ubdc/public/base/scss/_profile.scss b/ckanext/ubdc/public/base/scss/_profile.scss
new file mode 100644
index 0000000..7a75768
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_profile.scss
@@ -0,0 +1,6 @@
+.profile {
+    .empty,
+    .dataset-list {
+        margin-bottom: 20px;
+    }
+}
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/scss/_prose.scss b/ckanext/ubdc/public/base/scss/_prose.scss
new file mode 100644
index 0000000..77e1e5a
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_prose.scss
@@ -0,0 +1,103 @@
+h1 {
+    font-size: 32px;
+}
+
+h2 {
+    font-size: 21px;
+}
+
+h3 {
+    font-size: 18px;
+}
+
+h4 {
+    font-size: $font-size-base;
+}
+
+h1,
+h2,
+h3,
+h4 {
+    line-height: 1.5;
+    small {
+        font-size: $font-size-base;
+    }
+}
+
+.prose {
+    h1,
+    heading-1 h2,
+    heading-2 {
+        margin-bottom: 15px;
+    }
+    h3,
+    heading-3 {
+        margin-bottom: 10px;
+    }
+}
+
+.table-chunky td,
+.table-chunky th {
+    padding: 12px 15px;
+    font-size: 12px;
+}
+
+.table-chunky thead th,
+.table-chunky thead td {
+    color: $chunkyTableHeaderTextColor;
+    background-color: $chunkyTableHeaderBackgroundColor;
+    padding-top: 10px;
+    padding-bottom: 10px;
+}
+
+.table-striped {
+    tbody {
+        tr:nth-child(odd) td,
+        tr:nth-child(odd) th {
+            background-color: transparent;
+        }
+        tr:nth-child(even) td,
+        tr:nth-child(even) th {
+            background-color: $chunkyTableStripeBackgroundColor;
+        }
+    }
+}
+
+// Oh boy.
+.table-chunky.table-bordered {
+    $radius: 2px;
+    @include border-radius($radius);
+    // For first th or td in the first row in the first thead or tbody
+    thead:first-child tr:first-child th:first-child,
+    tbody:first-child tr:first-child td:first-child {
+        -webkit-border-top-left-radius: $radius;
+        -moz-border-radius-topleft: $radius;
+        border-top-left-radius: $radius;
+    }
+    thead:first-child tr:first-child th:last-child,
+    tbody:first-child tr:first-child td:last-child {
+        -webkit-border-top-right-radius: $radius;
+        -moz-border-radius-topright: $radius;
+        border-top-right-radius: $radius;
+    }
+    // For first th or td in the first row in the first thead or tbody
+    thead:last-child tr:last-child th:first-child,
+    tbody:last-child tr:last-child td:first-child {
+        @include border-radius(0 0 0 $radius);
+        -webkit-border-bottom-left-radius: $radius;
+        -moz-border-radius-bottomleft: $radius;
+        border-bottom-left-radius: $radius;
+    }
+    thead:last-child tr:last-child th:last-child,
+    tbody:last-child tr:last-child td:last-child {
+        -webkit-border-bottom-right-radius: $radius;
+        -moz-border-radius-bottomright: $radius;
+        border-bottom-right-radius: $radius;
+    }
+}
+
+.ellipsis {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/scss/_resource-view.scss b/ckanext/ubdc/public/base/scss/_resource-view.scss
new file mode 100644
index 0000000..3acd25d
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_resource-view.scss
@@ -0,0 +1,100 @@
+.resource-view {
+  .actions {
+    right: 0;
+  }
+}
+
+.resource-view-filters {
+  margin-bottom: 1em;
+  .resource-view-filter {
+    margin-bottom: 1.0em;
+  }
+  .resource-view-remove-filter {
+    cursor: pointer;
+    color: $errorText;
+  }
+  .resource-view-filter-values .select2-container {
+    margin-right: 0.3em;
+    margin-bottom: 0.2em;
+    width: 24% !important;
+    .select2-search-choice-close {
+      left: auto;
+    }
+  }
+}
+
+.resource-view-list {
+  &.reordering {
+    margin: -10px -10px 0;
+    li {
+      margin-bottom: 10px;
+      @include border-radius($nav-pills-border-radius - 1);
+      cursor: move;
+      a {
+        cursor: inherit;
+      }
+      .handle {
+        padding: 0;
+        display: block;
+        position: absolute;
+        color: $moduleHeadingActionTextColor;
+        left: -31px;
+        top: 50%;
+        margin-top: -15px;
+        width: 30px;
+        height: 30px;
+        line-height: 30px;
+        text-align: center;
+        border: 1px solid $moduleHeadingBorderColor;
+        border-width: 1px 0 1px 1px;
+        background-color: $moduleBackgroundColor;
+        @include border-radius(20px 0 0 20px);
+        &:hover {
+          text-decoration: none;
+        }
+      }
+      &:hover .handle {
+        background-color: $layoutBackgroundColor;
+      }
+      &.ui-sortable-helper {
+        background-color: $layoutBackgroundColor;
+        border: 1px solid $layoutLinkColor;
+        .handle {
+          background-color: $layoutBackgroundColor;
+          border-color: $layoutLinkColor;
+          color: $navLinkColor;
+        }
+      }
+    }
+  }
+}
+
+.resource-view-list {
+  >li>a {
+    border-radius: 0;
+  }
+  li {
+    margin-bottom: -3px;
+    border: 1px solid $moduleHeadingBorderColor;
+    &:first-child {
+      border-top-left-radius: $nav-pills-border-radius;
+      border-top-right-radius: $nav-pills-border-radius;
+    }
+    &:last-child {
+      border-bottom-left-radius: $nav-pills-border-radius;
+      border-bottom-right-radius: $nav-pills-border-radius;
+    }
+    .handle {
+      display: none;
+    }
+  }
+}
+
+.view-preview-container {
+  .module-content {
+    position: relative;
+  }
+  .actions {
+    right: calc($grid-gutter-width/2);
+  }
+}
diff --git a/ckanext/ubdc/public/base/scss/_search.scss b/ckanext/ubdc/public/base/scss/_search.scss
new file mode 100644
index 0000000..574af30
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_search.scss
@@ -0,0 +1,139 @@
+@use "sass:math";
+
+.search-form {
+    // @extend clearfix;
+    margin-bottom: 20px;
+    padding-bottom: 25px;
+    border-bottom: 1px dotted $genericBorderColor;
+    // Normal search box
+    .search-input {
+        position: relative;
+        margin-bottom: 20px;
+        input {
+            @include box-sizing(border-box);
+            margin: 0;
+            width: 100%;
+            height: auto;
+        }
+        button {
+            cursor: pointer;
+            display: block;
+            position: absolute;
+            top: 50%;
+            margin-top: -10px;
+            right: 10px;
+            height: 20px;
+            padding: 0;
+            border: none;
+            background: transparent;
+            span {
+                display: none;
+            }
+            i {
+                color: $inputBorder;
+                @include transition(color 0.2s ease-in);
+            }
+            &:hover i {
+                color: $inputColor;
+            }
+        }
+        &.search-giant {
+            input {
+                font-size: 16px;
+                padding: 15px;
+            }
+            button {
+                margin-top: math.div(-$grid-gutter-width, 2);
+                right: 15px;
+                // height: 30px;
+                i {
+                    font-size: 28px;
+                    width: 28px;
+                }
+            }
+
+        }
+
+    }
+    .control-order-by {
+        label,
+        select {
+            display: inline;
+        }
+        .form-control {
+            width: auto;
+        }
+    }
+    // h2 {
+    //     font-size: 24px;
+    //     line-height: 1.3;
+    //     color: $layoutBoldColor;
+    //     margin-bottom: 0;
+    //     margin-top: 20px;
+    // }
+    .filter-list {
+        color: $layoutTextColor;
+        line-height: 32px;
+        margin: 10px 0 0 0;
+        .pill {
+            line-height: 21px;
+        }
+        .extra {
+            margin-top: 10px;
+            font-size: 18px;
+            font-weight: normal;
+            color: $layoutBoldColor;
+        }
+    }
+    &.no-bottom-border {
+        border-bottom-width: 0;
+        margin-bottom: 0;
+    }
+    .search-input-group {
+        margin-bottom: $grid-gutter-width;
+        // .input-group-btn {
+        //     .btn {
+        //         margin-top: 25px;
+        //     }
+        // }
+    }
+}
+.search-form {
+    button {
+        padding: 10.6px;
+    }
+}
+
+.tertiary {
+    .control-order-by {
+        float: none;
+        margin: 0;
+        label {
+            display: block;
+            margin-bottom: 5px;
+            font-weight: normal;
+            font-size: 12px;
+        }
+        select {
+            display: block;
+            font-size: 12px;
+            width: 100%;
+        }
+    }
+    .search-input {
+        margin-bottom: 10px;
+    }
+}
+
+@media (min-width: $screen-md-min) {
+    .search-form .control-order-by {
+        float: right;
+        margin-left: 15px;
+    }
+    .tertiary {
+        .search-form .control-order-by {
+            float: none;
+            margin: 0;
+        }
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_tables.scss b/ckanext/ubdc/public/base/scss/_tables.scss
new file mode 100644
index 0000000..2ba5b54
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_tables.scss
@@ -0,0 +1,70 @@
+.table-selected td {
+    background-color: $input-bg;
+    .edit {
+        display: block;
+    }
+}
+
+.table-bulk-edit {
+    th input {
+        top: -5px;
+    }
+    .table-actions .btn-group {
+        float: left;
+        margin: 0 10px 0 0;
+    }
+    .context p {
+        margin-bottom: 0;
+    }
+}
+
+.table-header thead th {
+    background-color: $moduleHeadingBackgroundColor;
+}
+
+.table-edit-hover {
+    .edit {
+        display: none;
+        float: right;
+    }
+    tr:hover .edit {
+        display: block;
+    }
+}
+
+.js {
+    .table-toggle-more {
+        .toggle-more {
+            display: none;
+        }
+        .show-more {
+            display: inline;
+        }
+        .show-less {
+            display: none;
+        }
+        .toggle-seperator {
+            display: table-row;
+            td {
+                height: 11px;
+                padding: 0;
+                background-image: url("#{$imagePath}/table-seperator.png");
+            }
+        }
+    }
+    .table .toggle-show td {
+        background: none;
+        text-align: center;
+    }
+    .table-toggle-less {
+        .show-less {
+            display: inline;
+        }
+        .show-more {
+            display: none;
+        }
+        .toggle-seperator {
+            display: none;
+        }
+    }
+}
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/scss/_toolbar.scss b/ckanext/ubdc/public/base/scss/_toolbar.scss
new file mode 100644
index 0000000..603327d
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_toolbar.scss
@@ -0,0 +1,150 @@
+.toolbar {
+    @include clearfix;
+    position: relative;
+    margin-bottom: 10px;
+    padding: 5px 0;
+}
+
+.page_primary_action {
+    margin-bottom: 20px;
+}
+
+.toolbar .breadcrumb {
+    @include clearfix;
+    @include box-shadow(none);
+    position: relative;
+    float: left;
+    margin: 0;
+    padding: 0;
+    border: none;
+    background: none;
+    font-size: $font-size-large;
+    // line-height: 1.3;
+}
+
+// .toolbar .breadcrumb li:after {
+//   content: " / ";
+// }
+// .toolbar .breadcrumb li.active:after {
+//   content: "";
+// }
+// Needs to be a separate declaration as IE chokes on the last-of-type.
+// .toolbar .breadcrumb li:last-of-type:after {
+//   content: "";
+// }
+
+.toolbar .home a {
+    text-decoration: none;
+}
+
+.toolbar .home span {
+    display: none;
+}
+
+.toolbar .breadcrumb a {
+    color: $breadcrumbTextColor;
+}
+
+@media (max-width: $screen-xs-max) {
+    .toolbar .breadcrumb {
+        color: #fff;
+        text-shadow: none;
+        // .home {
+        //     display: none;
+        // }
+        a {
+            color: #fff;
+            text-shadow: none;
+        }
+    }
+}
+
+.toolbar .breadcrumb .active a,
+.toolbar .breadcrumb a.active {
+    font-weight: bold;
+}
+
+.actions {
+    @include list-unstyled;
+    position: absolute;
+    top: 10px;
+    right: 10px;
+    z-index: 1;
+}
+
+.actions li {
+    display: inline-block;
+    margin-right: 5px;
+    //@extend ie7-inline-block;
+}
+
+.actions li:last-of-type {
+    margin-right: 0;
+}
+
+.hide-heading {
+    display: none;
+}
+
+.page-header {
+    &.module-content{
+        padding-top: calc($grid-gutter-width/2);
+        padding-bottom: 0;
+    }
+    margin-top: $grid-gutter-width;
+    @include clearfix;
+    border-bottom: 1px solid $moduleHeadingBorderColor;
+    background-color: $moduleHeadingBackgroundColor;
+    @include border-radius(0 3px 0 0);
+    .nav-tabs {
+        float: left;
+        margin-bottom: -1px;
+        li.active a,
+        a:hover {
+            background-color: $moduleBackgroundColor;
+        }
+    }
+    .content_action {
+        float: right;
+        margin-top: -3px;
+        // margin-right: -7px;
+    }
+}
+
+.no-nav .page-header {
+    @include border-radius(3px 3px 0 0);
+}
+
+.nav-tabs-plain {
+    padding: 0 $gutterX;
+    &>.active>a,
+    &>.active>a:hover {
+        background-color: $moduleBackgroundColor;
+    }
+}
+
+// @media (min-width: $screen-sm-min) {
+//     .col-md-9 .page-header {
+//         margin-left: -17px;
+//     }
+// }
+
+@media (max-width: $screen-sm-max) {
+    .page-header .nav-tabs {
+        margin: 5px 10px 10px -5px;
+        border: none;
+    }
+    .page-header .nav-tabs>li {
+        float: none;
+    }
+    .page-header .nav-tabs>li a {
+        -webkit-border-radius: 4px;
+        -moz-border-radius: 4px;
+        border-radius: 4px;
+    }
+    .page-header .nav-tabs>.active>a,
+    .page-header .nav-tabs>.active>a:hover,
+    .page-header .nav-tabs>.active>a:focus {
+        border-bottom-color: #dddddd;
+    }
+}
diff --git a/ckanext/ubdc/public/base/scss/_variables.scss b/ckanext/ubdc/public/base/scss/_variables.scss
new file mode 100644
index 0000000..241a73e
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/_variables.scss
@@ -0,0 +1,145 @@
+// Base variables
+$imagePath: "../../../base/images";
+$spritePath: "#{$imagePath}/sprite-ckan-icons.png";
+$bgPath: "#{$imagePath}/bg.png";
+$FontAwesomePath: "../../../base/vendor/font-awesome/font";
+@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,200,400,600,600,700');
+
+// Branding colors
+$brandPrimary: #F37021;
+$black: #000000;
+
+// Font Variables
+$font-size-xxlarge : 1.2em;
+$font-size-xlarge : 1.2em;
+$font-size-large : 1.375em;
+$font-size-medium : 16px;
+$font-size-small : 0.8em;
+$font-size-xsmall : 0.6em;
+$font-size-xxsmall : 0.4em;
+$font-size-xxxsmall : 0.2em;
+
+
+// Layout Variables
+$layoutFontFamily: 'Open Sans', sans-serif;
+$layoutTextColor: #444;
+$layoutBoldColor: #000;
+$layoutLinkColor: $brandPrimary;
+$layoutBackgroundColor: #eee;
+$layoutTrimBackgroundColor: #fff;
+$layoutTrimBorderColor: #ccc;
+$logoMaxHeight: 60px;
+
+$navLinkColor: #333;
+$navActiveBackgroundColor: #f6f6f6;
+
+// Module Variables
+$moduleBackgroundColor: #fff;
+$moduleHeadingBorderColor: #ddd;
+$moduleHeadingBackgroundColor: #f6f6f6;
+$moduleHeadingActionTextColor: #888;
+$moduleExpandedBackgroundColor: rgba(255, 255, 255, 0.9);
+
+$tabTextColor: #111;
+$tagBackgroundColor: #f6f6f6;
+
+$gutterX: 25px;
+$gutterY: 20px;
+$gutterSmallX: 15px;
+$gutterSmallY: $gutterY;
+
+$emptyTextColor: #6e6e6e;
+$genericBorderColor: #ddd;
+
+$breadcrumbTextColor: #505050;
+
+$mastheadTextColor: #fff;
+$mastheadLinkColor: $mastheadTextColor;
+$mastheadBackgroundColor: $black;
+$mastheadBackgroundColorStart: #005d7a;
+$mastheadBackgroundColorEnd: #00536b;
+
+$navItemActiveTextColor: #FFF;
+$navItemActiveBackgroundColor: #647A82;
+$navItemActiveArrowSize: 6px;
+
+$pillTextColor: $navItemActiveTextColor;
+$pillBackgroundColor: darken($navItemActiveBackgroundColor, 10%);
+
+$bannerTextColor: $mastheadTextColor;
+$bannerBackgroundColor: $mastheadBackgroundColor;
+
+
+$footerTextColor: #CCDEE3;
+$footerLinkColor: $footerTextColor;
+
+$inputColor: $gray-base;
+$inputBackground: $body-bg;
+$inputBorder: #ccc;
+$inputBorderRadius: 3px;
+$disabledCustomInputTextColor: #aaa;
+$disabledCustomInputBackground: #f3f3f3;
+
+$highlightBackground: #fdf7e9;
+$highlightHoverBackground: #fdf3d9;
+
+// Forms
+
+$errorText: #b55457;
+$errorBackground: lighten(#c6898b, 30%);
+$errorBorder: #c6898b;
+
+$formInfoText: #707070;
+
+$stagesTextColor: #aeaeae;
+$stagesBackground: #EDEDED;
+$stagesTransparentBackground: rgba(237, 237, 237, 0); // Used for arrows.
+$stagesActiveTextColor: #fff;
+$stagesActiveBackground: #8cc68a;
+$stagesActiveTransparentBackground: rgba(140, 198, 138, 0);
+$stagesCompleteTextColor: #eef6ed;
+$stagesCompleteBackground: #c5e2c4;
+$stagesCompleteTransparentBackground: rgba(197, 226, 196, 0);
+$stagesCounterTextColor: #fff;
+$stagesCounterBackground: #aeaeae;
+$stagesCounterActiveTextColor: #8cc68a;
+$stagesCounterActiveBackground: #fff;
+$stagesCounterCompleteTextColor: #c5e2c4;
+$stagesCounterCompleteBackground: #eef6ed;
+
+$codeTextColor: #000;
+
+
+// Datasets
+
+$listingHeadingTextColor: #333;
+$resourceFormatBackground: #6e6e6e;
+
+// Table
+
+$chunkyTableHeaderTextColor: #fff;
+$chunkyTableHeaderBackgroundColor: #aaa;
+$chunkyTableStripeBackgroundColor: #f2f2f2;
+
+// Twitter Bootstrap Overrides
+$bodyBackground: $layoutBackgroundColor;
+$btnBackground: #ffffff;
+$btnBackgroundHighlight: #eaeaea;
+$btnPrimaryBackground: $brandPrimary;
+$btnPrimaryBackgroundHighlight: $brandPrimary;
+$baseFontFamily: $layoutFontFamily;
+$textColor: $layoutTextColor;
+$linkColor: $layoutLinkColor;
+$iconSpritePath: "../images/bootstrap-glyphicons-halflings.png";
+$iconWhiteSpritePath: "../images/bootstrap-glyphicons-halflings-white.png";
+
+// Activity Stream base colors
+$activityColorText: #FFFFFF;
+$activityColorBlank: #999999;
+$activityColorNew: #69A67A;
+$activityColorNeutral: #767DCE;
+$activityColorModify: #767DCE;
+$activityColorDelete: #B95252;
+
+// Navigation
+$zindex-navbar: 1;
diff --git a/ckanext/ubdc/public/base/scss/main-rtl.scss b/ckanext/ubdc/public/base/scss/main-rtl.scss
new file mode 100644
index 0000000..aeb08ea
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/main-rtl.scss
@@ -0,0 +1,6 @@
+// Bootstrap v3.4.1 
+@import "bootstrap.scss";
+@import "bootstrap-rtl.scss";
+
+// CKAN
+@import "ckan-rtl.scss";
diff --git a/ckanext/ubdc/public/base/scss/style.scss b/ckanext/ubdc/public/base/scss/style.scss
new file mode 100644
index 0000000..7fefab4
--- /dev/null
+++ b/ckanext/ubdc/public/base/scss/style.scss
@@ -0,0 +1,2 @@
+@import "bootstrap";
+@import "ckan";
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
Binary files /dev/null and b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot differ
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 
\ No newline at end of file
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
Binary files /dev/null and b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf differ
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
Binary files /dev/null and b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff differ
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
Binary files /dev/null and b/ckanext/ubdc/public/base/vendor/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2 differ
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap-sprockets.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap-sprockets.js
new file mode 100644
index 0000000..fb01d63
--- /dev/null
+++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap-sprockets.js
@@ -0,0 +1,12 @@
+//= require ./bootstrap/transition
+//= require ./bootstrap/alert
+//= require ./bootstrap/button
+//= require ./bootstrap/carousel
+//= require ./bootstrap/collapse
+//= require ./bootstrap/dropdown
+//= require ./bootstrap/modal
+//= require ./bootstrap/tab
+//= require ./bootstrap/affix
+//= require ./bootstrap/scrollspy
+//= require ./bootstrap/tooltip
+//= require ./bootstrap/popover
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap.js
new file mode 100644
index 0000000..170bd60
--- /dev/null
+++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap.js
@@ -0,0 +1,2580 @@
+/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+
+if (typeof jQuery === 'undefined') {
+  throw new Error('Bootstrap\'s JavaScript requires jQuery')
+}
+
++function ($) {
+  'use strict';
+  var version = $.fn.jquery.split(' ')[0].split('.')
+  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
+    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
+  }
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      WebkitTransition : 'webkitTransitionEnd',
+      MozTransition    : 'transitionend',
+      OTransition      : 'oTransitionEnd otransitionend',
+      transition       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+
+    return false // explicit for ie8 (  ._.)
+  }
+
+  // https://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false
+    var $el = this
+    $(this).one('bsTransitionEnd', function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+
+    if (!$.support.transition) return
+
+    $.event.special.bsTransitionEnd = {
+      bindType: $.support.transition.end,
+      delegateType: $.support.transition.end,
+      handle: function (e) {
+        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+      }
+    }
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.VERSION = '3.4.1'
+
+  Alert.TRANSITION_DURATION = 150
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    selector    = selector === '#' ? [] : selector
+    var $parent = $(document).find(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.closest('.alert')
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      // detach from parent, fire event then clean up data
+      $parent.detach().trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one('bsTransitionEnd', removeElement)
+        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.alert
+
+  $.fn.alert             = Plugin
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element  = $(element)
+    this.options   = $.extend({}, Button.DEFAULTS, options)
+    this.isLoading = false
+  }
+
+  Button.VERSION  = '3.4.1'
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state += 'Text'
+
+    if (data.resetText == null) $el.data('resetText', $el[val]())
+
+    // push to event loop to allow forms to submit
+    setTimeout($.proxy(function () {
+      $el[val](data[state] == null ? this.options[state] : data[state])
+
+      if (state == 'loadingText') {
+        this.isLoading = true
+        $el.addClass(d).attr(d, d).prop(d, true)
+      } else if (this.isLoading) {
+        this.isLoading = false
+        $el.removeClass(d).removeAttr(d).prop(d, false)
+      }
+    }, this), 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var changed = true
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+      if ($input.prop('type') == 'radio') {
+        if ($input.prop('checked')) changed = false
+        $parent.find('.active').removeClass('active')
+        this.$element.addClass('active')
+      } else if ($input.prop('type') == 'checkbox') {
+        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
+        this.$element.toggleClass('active')
+      }
+      $input.prop('checked', this.$element.hasClass('active'))
+      if (changed) $input.trigger('change')
+    } else {
+      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
+      this.$element.toggleClass('active')
+    }
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  var old = $.fn.button
+
+  $.fn.button             = Plugin
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document)
+    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      var $btn = $(e.target).closest('.btn')
+      Plugin.call($btn, 'toggle')
+      if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
+        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
+        e.preventDefault()
+        // The target component still receive the focus
+        if ($btn.is('input,button')) $btn.trigger('focus')
+        else $btn.find('input:visible,button:visible').first().trigger('focus')
+      }
+    })
+    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+    })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      = null
+    this.sliding     = null
+    this.interval    = null
+    this.$active     = null
+    this.$items      = null
+
+    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
+  }
+
+  Carousel.VERSION  = '3.4.1'
+
+  Carousel.TRANSITION_DURATION = 600
+
+  Carousel.DEFAULTS = {
+    interval: 5000,
+    pause: 'hover',
+    wrap: true,
+    keyboard: true
+  }
+
+  Carousel.prototype.keydown = function (e) {
+    if (/input|textarea/i.test(e.target.tagName)) return
+    switch (e.which) {
+      case 37: this.prev(); break
+      case 39: this.next(); break
+      default: return
+    }
+
+    e.preventDefault()
+  }
+
+  Carousel.prototype.cycle = function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getItemIndex = function (item) {
+    this.$items = item.parent().children('.item')
+    return this.$items.index(item || this.$active)
+  }
+
+  Carousel.prototype.getItemForDirection = function (direction, active) {
+    var activeIndex = this.getItemIndex(active)
+    var willWrap = (direction == 'prev' && activeIndex === 0)
+                || (direction == 'next' && activeIndex == (this.$items.length - 1))
+    if (willWrap && !this.options.wrap) return active
+    var delta = direction == 'prev' ? -1 : 1
+    var itemIndex = (activeIndex + delta) % this.$items.length
+    return this.$items.eq(itemIndex)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || this.getItemForDirection(type, $active)
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var that      = this
+
+    if ($next.hasClass('active')) return (this.sliding = false)
+
+    var relatedTarget = $next[0]
+    var slideEvent = $.Event('slide.bs.carousel', {
+      relatedTarget: relatedTarget,
+      direction: direction
+    })
+    this.$element.trigger(slideEvent)
+    if (slideEvent.isDefaultPrevented()) return
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+      $nextIndicator && $nextIndicator.addClass('active')
+    }
+
+    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      $next.addClass(type)
+      if (typeof $next === 'object' && $next.length) {
+        $next[0].offsetWidth // force reflow
+      }
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one('bsTransitionEnd', function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () {
+            that.$element.trigger(slidEvent)
+          }, 0)
+        })
+        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
+    } else {
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger(slidEvent)
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  var old = $.fn.carousel
+
+  $.fn.carousel             = Plugin
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  var clickHandler = function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    if (href) {
+      href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+    }
+
+    var target  = $this.attr('data-target') || href
+    var $target = $(document).find(target)
+
+    if (!$target.hasClass('carousel')) return
+
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    Plugin.call($target, options)
+
+    if (slideIndex) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  }
+
+  $(document)
+    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      Plugin.call($carousel, $carousel.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+/* jshint latedef: false */
+
++function ($) {
+  'use strict';
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
+                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
+    this.transitioning = null
+
+    if (this.options.parent) {
+      this.$parent = this.getParent()
+    } else {
+      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+    }
+
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.VERSION  = '3.4.1'
+
+  Collapse.TRANSITION_DURATION = 350
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var activesData
+    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
+
+    if (actives && actives.length) {
+      activesData = actives.data('bs.collapse')
+      if (activesData && activesData.transitioning) return
+    }
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    if (actives && actives.length) {
+      Plugin.call(actives, 'hide')
+      activesData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')[dimension](0)
+      .attr('aria-expanded', true)
+
+    this.$trigger
+      .removeClass('collapsed')
+      .attr('aria-expanded', true)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse in')[dimension]('')
+      this.transitioning = 0
+      this.$element
+        .trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse in')
+      .attr('aria-expanded', false)
+
+    this.$trigger
+      .addClass('collapsed')
+      .attr('aria-expanded', false)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse')
+        .trigger('hidden.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+  Collapse.prototype.getParent = function () {
+    return $(document).find(this.options.parent)
+      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+      .each($.proxy(function (i, element) {
+        var $element = $(element)
+        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+      }, this))
+      .end()
+  }
+
+  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+    var isOpen = $element.hasClass('in')
+
+    $element.attr('aria-expanded', isOpen)
+    $trigger
+      .toggleClass('collapsed', !isOpen)
+      .attr('aria-expanded', isOpen)
+  }
+
+  function getTargetFromTrigger($trigger) {
+    var href
+    var target = $trigger.attr('data-target')
+      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+    return $(document).find(target)
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.collapse
+
+  $.fn.collapse             = Plugin
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+    var $this   = $(this)
+
+    if (!$this.attr('data-target')) e.preventDefault()
+
+    var $target = getTargetFromTrigger($this)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+
+    Plugin.call($target, option)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle="dropdown"]'
+  var Dropdown = function (element) {
+    $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.VERSION = '3.4.1'
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = selector !== '#' ? $(document).find(selector) : null
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+  function clearMenus(e) {
+    if (e && e.which === 3) return
+    $(backdrop).remove()
+    $(toggle).each(function () {
+      var $this         = $(this)
+      var $parent       = getParent($this)
+      var relatedTarget = { relatedTarget: this }
+
+      if (!$parent.hasClass('open')) return
+
+      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
+
+      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this.attr('aria-expanded', 'false')
+      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
+    })
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we use a backdrop because click events don't delegate
+        $(document.createElement('div'))
+          .addClass('dropdown-backdrop')
+          .insertAfter($(this))
+          .on('click', clearMenus)
+      }
+
+      var relatedTarget = { relatedTarget: this }
+      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this
+        .trigger('focus')
+        .attr('aria-expanded', 'true')
+
+      $parent
+        .toggleClass('open')
+        .trigger($.Event('shown.bs.dropdown', relatedTarget))
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive && e.which != 27 || isActive && e.which == 27) {
+      if (e.which == 27) $parent.find(toggle).trigger('focus')
+      return $this.trigger('click')
+    }
+
+    var desc = ' li:not(.disabled):visible a'
+    var $items = $parent.find('.dropdown-menu' + desc)
+
+    if (!$items.length) return
+
+    var index = $items.index(e.target)
+
+    if (e.which == 38 && index > 0)                 index--         // up
+    if (e.which == 40 && index < $items.length - 1) index++         // down
+    if (!~index)                                    index = 0
+
+    $items.eq(index).trigger('focus')
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.dropdown')
+
+      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown             = Plugin
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options = options
+    this.$body = $(document.body)
+    this.$element = $(element)
+    this.$dialog = this.$element.find('.modal-dialog')
+    this.$backdrop = null
+    this.isShown = null
+    this.originalBodyPad = null
+    this.scrollbarWidth = 0
+    this.ignoreBackdropClick = false
+    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
+
+    if (this.options.remote) {
+      this.$element
+        .find('.modal-content')
+        .load(this.options.remote, $.proxy(function () {
+          this.$element.trigger('loaded.bs.modal')
+        }, this))
+    }
+  }
+
+  Modal.VERSION = '3.4.1'
+
+  Modal.TRANSITION_DURATION = 300
+  Modal.BACKDROP_TRANSITION_DURATION = 150
+
+  Modal.DEFAULTS = {
+    backdrop: true,
+    keyboard: true,
+    show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this.isShown ? this.hide() : this.show(_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.checkScrollbar()
+    this.setScrollbar()
+    this.$body.addClass('modal-open')
+
+    this.escape()
+    this.resize()
+
+    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
+      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
+        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
+      })
+    })
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(that.$body) // don't move modals dom position
+      }
+
+      that.$element
+        .show()
+        .scrollTop(0)
+
+      that.adjustDialog()
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element.addClass('in')
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$dialog // wait for modal to slide in
+          .one('bsTransitionEnd', function () {
+            that.$element.trigger('focus').trigger(e)
+          })
+          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+        that.$element.trigger('focus').trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+    this.resize()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .off('click.dismiss.bs.modal')
+      .off('mouseup.dismiss.bs.modal')
+
+    this.$dialog.off('mousedown.dismiss.bs.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (document !== e.target &&
+          this.$element[0] !== e.target &&
+          !this.$element.has(e.target).length) {
+          this.$element.trigger('focus')
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keydown.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.resize = function () {
+    if (this.isShown) {
+      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+    } else {
+      $(window).off('resize.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.$body.removeClass('modal-open')
+      that.resetAdjustments()
+      that.resetScrollbar()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var that = this
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $(document.createElement('div'))
+        .addClass('modal-backdrop ' + animate)
+        .appendTo(this.$body)
+
+      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+        if (this.ignoreBackdropClick) {
+          this.ignoreBackdropClick = false
+          return
+        }
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus()
+          : this.hide()
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one('bsTransitionEnd', callback)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      var callbackRemove = function () {
+        that.removeBackdrop()
+        callback && callback()
+      }
+      $.support.transition && this.$element.hasClass('fade') ?
+        this.$backdrop
+          .one('bsTransitionEnd', callbackRemove)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callbackRemove()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+  // these following methods are used to handle overflowing modals
+
+  Modal.prototype.handleUpdate = function () {
+    this.adjustDialog()
+  }
+
+  Modal.prototype.adjustDialog = function () {
+    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+    this.$element.css({
+      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+    })
+  }
+
+  Modal.prototype.resetAdjustments = function () {
+    this.$element.css({
+      paddingLeft: '',
+      paddingRight: ''
+    })
+  }
+
+  Modal.prototype.checkScrollbar = function () {
+    var fullWindowWidth = window.innerWidth
+    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
+      var documentElementRect = document.documentElement.getBoundingClientRect()
+      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
+    }
+    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
+    this.scrollbarWidth = this.measureScrollbar()
+  }
+
+  Modal.prototype.setScrollbar = function () {
+    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+    this.originalBodyPad = document.body.style.paddingRight || ''
+    var scrollbarWidth = this.scrollbarWidth
+    if (this.bodyIsOverflowing) {
+      this.$body.css('padding-right', bodyPad + scrollbarWidth)
+      $(this.fixedContent).each(function (index, element) {
+        var actualPadding = element.style.paddingRight
+        var calculatedPadding = $(element).css('padding-right')
+        $(element)
+          .data('padding-right', actualPadding)
+          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
+      })
+    }
+  }
+
+  Modal.prototype.resetScrollbar = function () {
+    this.$body.css('padding-right', this.originalBodyPad)
+    $(this.fixedContent).each(function (index, element) {
+      var padding = $(element).data('padding-right')
+      $(element).removeData('padding-right')
+      element.style.paddingRight = padding ? padding : ''
+    })
+  }
+
+  Modal.prototype.measureScrollbar = function () { // thx walsh
+    var scrollDiv = document.createElement('div')
+    scrollDiv.className = 'modal-scrollbar-measure'
+    this.$body.append(scrollDiv)
+    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+    this.$body[0].removeChild(scrollDiv)
+    return scrollbarWidth
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option, _relatedTarget) {
+    return this.each(function () {
+      var $this = $(this)
+      var data = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  var old = $.fn.modal
+
+  $.fn.modal = Plugin
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this = $(this)
+    var href = $this.attr('href')
+    var target = $this.attr('data-target') ||
+      (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+
+    var $target = $(document).find(target)
+    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    if ($this.is('a')) e.preventDefault()
+
+    $target.one('show.bs.modal', function (showEvent) {
+      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+      $target.one('hidden.bs.modal', function () {
+        $this.is(':visible') && $this.trigger('focus')
+      })
+    })
+    Plugin.call($target, option, this)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
++function ($) {
+  'use strict';
+
+  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
+
+  var uriAttrs = [
+    'background',
+    'cite',
+    'href',
+    'itemtype',
+    'longdesc',
+    'poster',
+    'src',
+    'xlink:href'
+  ]
+
+  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
+
+  var DefaultWhitelist = {
+    // Global attributes allowed on any supplied element below.
+    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
+    a: ['target', 'href', 'title', 'rel'],
+    area: [],
+    b: [],
+    br: [],
+    col: [],
+    code: [],
+    div: [],
+    em: [],
+    hr: [],
+    h1: [],
+    h2: [],
+    h3: [],
+    h4: [],
+    h5: [],
+    h6: [],
+    i: [],
+    img: ['src', 'alt', 'title', 'width', 'height'],
+    li: [],
+    ol: [],
+    p: [],
+    pre: [],
+    s: [],
+    small: [],
+    span: [],
+    sub: [],
+    sup: [],
+    strong: [],
+    u: [],
+    ul: []
+  }
+
+  /**
+   * A pattern that recognizes a commonly useful subset of URLs that are safe.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
+
+  /**
+   * A pattern that matches safe data URLs. Only matches image, video and audio types.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
+
+  function allowedAttribute(attr, allowedAttributeList) {
+    var attrName = attr.nodeName.toLowerCase()
+
+    if ($.inArray(attrName, allowedAttributeList) !== -1) {
+      if ($.inArray(attrName, uriAttrs) !== -1) {
+        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
+      }
+
+      return true
+    }
+
+    var regExp = $(allowedAttributeList).filter(function (index, value) {
+      return value instanceof RegExp
+    })
+
+    // Check if a regular expression validates the attribute.
+    for (var i = 0, l = regExp.length; i < l; i++) {
+      if (attrName.match(regExp[i])) {
+        return true
+      }
+    }
+
+    return false
+  }
+
+  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
+    if (unsafeHtml.length === 0) {
+      return unsafeHtml
+    }
+
+    if (sanitizeFn && typeof sanitizeFn === 'function') {
+      return sanitizeFn(unsafeHtml)
+    }
+
+    // IE 8 and below don't support createHTMLDocument
+    if (!document.implementation || !document.implementation.createHTMLDocument) {
+      return unsafeHtml
+    }
+
+    var createdDocument = document.implementation.createHTMLDocument('sanitization')
+    createdDocument.body.innerHTML = unsafeHtml
+
+    var whitelistKeys = $.map(whiteList, function (el, i) { return i })
+    var elements = $(createdDocument.body).find('*')
+
+    for (var i = 0, len = elements.length; i < len; i++) {
+      var el = elements[i]
+      var elName = el.nodeName.toLowerCase()
+
+      if ($.inArray(elName, whitelistKeys) === -1) {
+        el.parentNode.removeChild(el)
+
+        continue
+      }
+
+      var attributeList = $.map(el.attributes, function (el) { return el })
+      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
+
+      for (var j = 0, len2 = attributeList.length; j < len2; j++) {
+        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
+          el.removeAttribute(attributeList[j].nodeName)
+        }
+      }
+    }
+
+    return createdDocument.body.innerHTML
+  }
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       = null
+    this.options    = null
+    this.enabled    = null
+    this.timeout    = null
+    this.hoverState = null
+    this.$element   = null
+    this.inState    = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.VERSION  = '3.4.1'
+
+  Tooltip.TRANSITION_DURATION = 150
+
+  Tooltip.DEFAULTS = {
+    animation: true,
+    placement: 'top',
+    selector: false,
+    template: '',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    container: false,
+    viewport: {
+      selector: 'body',
+      padding: 0
+    },
+    sanitize : true,
+    sanitizeFn : null,
+    whiteList : DefaultWhitelist
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled   = true
+    this.type      = type
+    this.$element  = $(element)
+    this.options   = this.getOptions(options)
+    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
+    this.inState   = { click: false, hover: false, focus: false }
+
+    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
+      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
+    }
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    var dataAttributes = this.$element.data()
+
+    for (var dataAttr in dataAttributes) {
+      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
+        delete dataAttributes[dataAttr]
+      }
+    }
+
+    options = $.extend({}, this.getDefaults(), dataAttributes, options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay,
+        hide: options.delay
+      }
+    }
+
+    if (options.sanitize) {
+      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
+    }
+
+    if (self.tip().hasClass('in') || self.hoverState == 'in') {
+      self.hoverState = 'in'
+      return
+    }
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.isInStateTrue = function () {
+    for (var key in this.inState) {
+      if (this.inState[key]) return true
+    }
+
+    return false
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
+    }
+
+    if (self.isInStateTrue()) return
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.' + this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+      if (e.isDefaultPrevented() || !inDom) return
+      var that = this
+
+      var $tip = this.tip()
+
+      var tipId = this.getUID(this.type)
+
+      this.setContent()
+      $tip.attr('id', tipId)
+      this.$element.attr('aria-describedby', tipId)
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+        .data('bs.' + this.type, this)
+
+      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
+      this.$element.trigger('inserted.bs.' + this.type)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var orgPlacement = placement
+        var viewportDim = this.getPosition(this.$viewport)
+
+        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
+                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
+                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
+                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+
+      var complete = function () {
+        var prevHoverState = that.hoverState
+        that.$element.trigger('shown.bs.' + that.type)
+        that.hoverState = null
+
+        if (prevHoverState == 'out') that.leave(that)
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        $tip
+          .one('bsTransitionEnd', complete)
+          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+        complete()
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function (offset, placement) {
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  += marginTop
+    offset.left += marginLeft
+
+    // $.fn.offset doesn't round pixel values
+    // so we use setOffset directly with our own function B-0
+    $.offset.setOffset($tip[0], $.extend({
+      using: function (props) {
+        $tip.css({
+          top: Math.round(props.top),
+          left: Math.round(props.left)
+        })
+      }
+    }, offset), 0)
+
+    $tip.addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      offset.top = offset.top + height - actualHeight
+    }
+
+    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
+
+    if (delta.left) offset.left += delta.left
+    else offset.top += delta.top
+
+    var isVertical          = /top|bottom/.test(placement)
+    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
+
+    $tip.offset(offset)
+    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+  }
+
+  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
+    this.arrow()
+      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+      .css(isVertical ? 'top' : 'left', '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    if (this.options.html) {
+      if (this.options.sanitize) {
+        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
+      }
+
+      $tip.find('.tooltip-inner').html(title)
+    } else {
+      $tip.find('.tooltip-inner').text(title)
+    }
+
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function (callback) {
+    var that = this
+    var $tip = $(this.$tip)
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
+        that.$element
+          .removeAttr('aria-describedby')
+          .trigger('hidden.bs.' + that.type)
+      }
+      callback && callback()
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && $tip.hasClass('fade') ?
+      $tip
+        .one('bsTransitionEnd', complete)
+        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+      complete()
+
+    this.hoverState = null
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function ($element) {
+    $element   = $element || this.$element
+
+    var el     = $element[0]
+    var isBody = el.tagName == 'BODY'
+
+    var elRect    = el.getBoundingClientRect()
+    if (elRect.width == null) {
+      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+    }
+    var isSvg = window.SVGElement && el instanceof window.SVGElement
+    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
+    // See https://github.com/twbs/bootstrap/issues/20280
+    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
+    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+    return $.extend({}, elRect, scroll, outerDims, elOffset)
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+  }
+
+  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+    var delta = { top: 0, left: 0 }
+    if (!this.$viewport) return delta
+
+    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+    var viewportDimensions = this.getPosition(this.$viewport)
+
+    if (/right|left/.test(placement)) {
+      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
+      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+      if (topEdgeOffset < viewportDimensions.top) { // top overflow
+        delta.top = viewportDimensions.top - topEdgeOffset
+      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+      }
+    } else {
+      var leftEdgeOffset  = pos.left - viewportPadding
+      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+        delta.left = viewportDimensions.left - leftEdgeOffset
+      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
+        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+      }
+    }
+
+    return delta
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.getUID = function (prefix) {
+    do prefix += ~~(Math.random() * 1000000)
+    while (document.getElementById(prefix))
+    return prefix
+  }
+
+  Tooltip.prototype.tip = function () {
+    if (!this.$tip) {
+      this.$tip = $(this.options.template)
+      if (this.$tip.length != 1) {
+        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
+      }
+    }
+    return this.$tip
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = this
+    if (e) {
+      self = $(e.currentTarget).data('bs.' + this.type)
+      if (!self) {
+        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+        $(e.currentTarget).data('bs.' + this.type, self)
+      }
+    }
+
+    if (e) {
+      self.inState.click = !self.inState.click
+      if (self.isInStateTrue()) self.enter(self)
+      else self.leave(self)
+    } else {
+      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+    }
+  }
+
+  Tooltip.prototype.destroy = function () {
+    var that = this
+    clearTimeout(this.timeout)
+    this.hide(function () {
+      that.$element.off('.' + that.type).removeData('bs.' + that.type)
+      if (that.$tip) {
+        that.$tip.detach()
+      }
+      that.$tip = null
+      that.$arrow = null
+      that.$viewport = null
+      that.$element = null
+    })
+  }
+
+  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
+    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
+  }
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip             = Plugin
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.VERSION  = '3.4.1'
+
+  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right',
+    trigger: 'click',
+    content: '',
+    template: ''
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    if (this.options.html) {
+      var typeContent = typeof content
+
+      if (this.options.sanitize) {
+        title = this.sanitizeHtml(title)
+
+        if (typeContent === 'string') {
+          content = this.sanitizeHtml(content)
+        }
+      }
+
+      $tip.find('.popover-title').html(title)
+      $tip.find('.popover-content').children().detach().end()[
+        typeContent === 'string' ? 'html' : 'append'
+      ](content)
+    } else {
+      $tip.find('.popover-title').text(title)
+      $tip.find('.popover-content').children().detach().end().text(content)
+    }
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+        o.content.call($e[0]) :
+        o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.popover
+
+  $.fn.popover             = Plugin
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    this.$body          = $(document.body)
+    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target || '') + ' .nav li > a'
+    this.offsets        = []
+    this.targets        = []
+    this.activeTarget   = null
+    this.scrollHeight   = 0
+
+    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.VERSION  = '3.4.1'
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.getScrollHeight = function () {
+    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var that          = this
+    var offsetMethod  = 'offset'
+    var offsetBase    = 0
+
+    this.offsets      = []
+    this.targets      = []
+    this.scrollHeight = this.getScrollHeight()
+
+    if (!$.isWindow(this.$scrollElement[0])) {
+      offsetMethod = 'position'
+      offsetBase   = this.$scrollElement.scrollTop()
+    }
+
+    this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#./.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && $href.is(':visible')
+          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        that.offsets.push(this[0])
+        that.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.getScrollHeight()
+    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (this.scrollHeight != scrollHeight) {
+      this.refresh()
+    }
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
+    }
+
+    if (activeTarget && scrollTop < offsets[0]) {
+      this.activeTarget = null
+      return this.clear()
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
+        && this.activate(targets[i])
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    this.clear()
+
+    var selector = this.selector +
+      '[data-target="' + target + '"],' +
+      this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length) {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate.bs.scrollspy')
+  }
+
+  ScrollSpy.prototype.clear = function () {
+    $(this.selector)
+      .parentsUntil(this.options.target, '.active')
+      .removeClass('active')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy             = Plugin
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load.bs.scrollspy.data-api', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      Plugin.call($spy, $spy.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    // jscs:disable requireDollarBeforejQueryAssignment
+    this.element = $(element)
+    // jscs:enable requireDollarBeforejQueryAssignment
+  }
+
+  Tab.VERSION = '3.4.1'
+
+  Tab.TRANSITION_DURATION = 150
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.data('target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var $previous = $ul.find('.active:last a')
+    var hideEvent = $.Event('hide.bs.tab', {
+      relatedTarget: $this[0]
+    })
+    var showEvent = $.Event('show.bs.tab', {
+      relatedTarget: $previous[0]
+    })
+
+    $previous.trigger(hideEvent)
+    $this.trigger(showEvent)
+
+    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
+
+    var $target = $(document).find(selector)
+
+    this.activate($this.closest('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $previous.trigger({
+        type: 'hidden.bs.tab',
+        relatedTarget: $this[0]
+      })
+      $this.trigger({
+        type: 'shown.bs.tab',
+        relatedTarget: $previous[0]
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+        .removeClass('active')
+        .end()
+        .find('[data-toggle="tab"]')
+        .attr('aria-expanded', false)
+
+      element
+        .addClass('active')
+        .find('[data-toggle="tab"]')
+        .attr('aria-expanded', true)
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu').length) {
+        element
+          .closest('li.dropdown')
+          .addClass('active')
+          .end()
+          .find('[data-toggle="tab"]')
+          .attr('aria-expanded', true)
+      }
+
+      callback && callback()
+    }
+
+    $active.length && transition ?
+      $active
+        .one('bsTransitionEnd', next)
+        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tab
+
+  $.fn.tab             = Plugin
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  var clickHandler = function (e) {
+    e.preventDefault()
+    Plugin.call($(this), 'show')
+  }
+
+  $(document)
+    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+
+    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
+
+    this.$target = target
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element     = $(element)
+    this.affixed      = null
+    this.unpin        = null
+    this.pinnedOffset = null
+
+    this.checkPosition()
+  }
+
+  Affix.VERSION  = '3.4.1'
+
+  Affix.RESET    = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0,
+    target: window
+  }
+
+  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+    var scrollTop    = this.$target.scrollTop()
+    var position     = this.$element.offset()
+    var targetHeight = this.$target.height()
+
+    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+    if (this.affixed == 'bottom') {
+      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+    }
+
+    var initializing   = this.affixed == null
+    var colliderTop    = initializing ? scrollTop : position.top
+    var colliderHeight = initializing ? targetHeight : height
+
+    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
+    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+    return false
+  }
+
+  Affix.prototype.getPinnedOffset = function () {
+    if (this.pinnedOffset) return this.pinnedOffset
+    this.$element.removeClass(Affix.RESET).addClass('affix')
+    var scrollTop = this.$target.scrollTop()
+    var position  = this.$element.offset()
+    return (this.pinnedOffset = position.top - scrollTop)
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var height       = this.$element.height()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+    var scrollHeight = Math.max($(document).height(), $(document.body).height())
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
+
+    if (this.affixed != affix) {
+      if (this.unpin != null) this.$element.css('top', '')
+
+      var affixType = 'affix' + (affix ? '-' + affix : '')
+      var e         = $.Event(affixType + '.bs.affix')
+
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+
+      this.affixed = affix
+      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+      this.$element
+        .removeClass(Affix.RESET)
+        .addClass(affixType)
+        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+    }
+
+    if (affix == 'bottom') {
+      this.$element.offset({
+        top: scrollHeight - height - offsetBottom
+      })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.affix
+
+  $.fn.affix             = Plugin
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
+
+      Plugin.call($spy, data)
+    })
+  })
+
+}(jQuery);
diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap.min.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap.min.js
new file mode 100644
index 0000000..eb0a8b4
--- /dev/null
+++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(idocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-dc.width?"left":"left"==s&&l.left-ha.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;ha.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e=n[t]&&(n[t+1]===undefined||e .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/alert.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/alert.js new file mode 100644 index 0000000..7f9606b --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/alert.js @@ -0,0 +1,95 @@ +/* ======================================================================== + * Bootstrap: alert.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#alerts + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.4.1' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + selector = selector === '#' ? [] : selector + var $parent = $(document).find(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/button.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/button.js new file mode 100644 index 0000000..ff4af20 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/button.js @@ -0,0 +1,125 @@ +/* ======================================================================== + * Bootstrap: button.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#buttons + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.4.1' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/carousel.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/carousel.js new file mode 100644 index 0000000..a5fcac3 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/carousel.js @@ -0,0 +1,246 @@ +/* ======================================================================== + * Bootstrap: carousel.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#carousel + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.4.1' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + if (typeof $next === 'object' && $next.length) { + $next[0].offsetWidth // force reflow + } + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var $this = $(this) + var href = $this.attr('href') + if (href) { + href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + } + + var target = $this.attr('data-target') || href + var $target = $(document).find(target) + + if (!$target.hasClass('carousel')) return + + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/collapse.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/collapse.js new file mode 100644 index 0000000..2cd5997 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/collapse.js @@ -0,0 +1,212 @@ +/* ======================================================================== + * Bootstrap: collapse.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#collapse + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.4.1' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(document).find(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(document).find(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/dropdown.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/dropdown.js new file mode 100644 index 0000000..4ded850 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/dropdown.js @@ -0,0 +1,165 @@ +/* ======================================================================== + * Bootstrap: dropdown.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.4.1' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector !== '#' ? $(document).find(selector) : null + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/modal.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/modal.js new file mode 100644 index 0000000..b9eca49 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/modal.js @@ -0,0 +1,358 @@ +/* ======================================================================== + * Bootstrap: modal.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#modals + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom' + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.4.1' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + var scrollbarWidth = this.scrollbarWidth + if (this.bodyIsOverflowing) { + this.$body.css('padding-right', bodyPad + scrollbarWidth) + $(this.fixedContent).each(function (index, element) { + var actualPadding = element.style.paddingRight + var calculatedPadding = $(element).css('padding-right') + $(element) + .data('padding-right', actualPadding) + .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px') + }) + } + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + $(this.fixedContent).each(function (index, element) { + var padding = $(element).data('padding-right') + $(element).removeData('padding-right') + element.style.paddingRight = padding ? padding : '' + }) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var target = $this.attr('data-target') || + (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + + var $target = $(document).find(target) + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/popover.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/popover.js new file mode 100644 index 0000000..66a301c --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/popover.js @@ -0,0 +1,123 @@ +/* ======================================================================== + * Bootstrap: popover.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#popovers + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.4.1' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + if (this.options.html) { + var typeContent = typeof content + + if (this.options.sanitize) { + title = this.sanitizeHtml(title) + + if (typeContent === 'string') { + content = this.sanitizeHtml(content) + } + } + + $tip.find('.popover-title').html(title) + $tip.find('.popover-content').children().detach().end()[ + typeContent === 'string' ? 'html' : 'append' + ](content) + } else { + $tip.find('.popover-title').text(title) + $tip.find('.popover-content').children().detach().end().text(content) + } + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/scrollspy.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/scrollspy.js new file mode 100644 index 0000000..a629ac6 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/scrollspy.js @@ -0,0 +1,172 @@ +/* ======================================================================== + * Bootstrap: scrollspy.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.4.1' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/tab.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/tab.js new file mode 100644 index 0000000..74495df --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/tab.js @@ -0,0 +1,155 @@ +/* ======================================================================== + * Bootstrap: tab.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#tabs + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.4.1' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(document).find(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/tooltip.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/tooltip.js new file mode 100644 index 0000000..c8c1c8c --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/tooltip.js @@ -0,0 +1,677 @@ +/* ======================================================================== + * Bootstrap: tooltip.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + ++function ($) { + 'use strict'; + + var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'] + + var uriAttrs = [ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ] + + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i + + var DefaultWhitelist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + } + + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi + + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i + + function allowedAttribute(attr, allowedAttributeList) { + var attrName = attr.nodeName.toLowerCase() + + if ($.inArray(attrName, allowedAttributeList) !== -1) { + if ($.inArray(attrName, uriAttrs) !== -1) { + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)) + } + + return true + } + + var regExp = $(allowedAttributeList).filter(function (index, value) { + return value instanceof RegExp + }) + + // Check if a regular expression validates the attribute. + for (var i = 0, l = regExp.length; i < l; i++) { + if (attrName.match(regExp[i])) { + return true + } + } + + return false + } + + function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { + if (unsafeHtml.length === 0) { + return unsafeHtml + } + + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeHtml) + } + + // IE 8 and below don't support createHTMLDocument + if (!document.implementation || !document.implementation.createHTMLDocument) { + return unsafeHtml + } + + var createdDocument = document.implementation.createHTMLDocument('sanitization') + createdDocument.body.innerHTML = unsafeHtml + + var whitelistKeys = $.map(whiteList, function (el, i) { return i }) + var elements = $(createdDocument.body).find('*') + + for (var i = 0, len = elements.length; i < len; i++) { + var el = elements[i] + var elName = el.nodeName.toLowerCase() + + if ($.inArray(elName, whitelistKeys) === -1) { + el.parentNode.removeChild(el) + + continue + } + + var attributeList = $.map(el.attributes, function (el) { return el }) + var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []) + + for (var j = 0, len2 = attributeList.length; j < len2; j++) { + if (!allowedAttribute(attributeList[j], whitelistedAttributes)) { + el.removeAttribute(attributeList[j].nodeName) + } + } + } + + return createdDocument.body.innerHTML + } + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.4.1' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + }, + sanitize : true, + sanitizeFn : null, + whiteList : DefaultWhitelist + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + var dataAttributes = this.$element.data() + + for (var dataAttr in dataAttributes) { + if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) { + delete dataAttributes[dataAttr] + } + } + + options = $.extend({}, this.getDefaults(), dataAttributes, options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + if (options.sanitize) { + options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn) + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + if (this.options.html) { + if (this.options.sanitize) { + title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn) + } + + $tip.find('.tooltip-inner').html(title) + } else { + $tip.find('.tooltip-inner').text(title) + } + + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + Tooltip.prototype.sanitizeHtml = function (unsafeHtml) { + return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn) + } + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/transition.js b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/transition.js new file mode 100644 index 0000000..5a9a3e3 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/javascripts/bootstrap/transition.js @@ -0,0 +1,59 @@ +/* ======================================================================== + * Bootstrap: transition.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#transitions + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // https://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-compass.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-compass.scss new file mode 100644 index 0000000..8fbc3cd --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-compass.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-url($path, true); +} + +@function twbs-image-path($path) { + @return image-url($path, true); +} + +$bootstrap-sass-asset-helper: true; diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-mincer.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-mincer.scss new file mode 100644 index 0000000..0c4655e --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-mincer.scss @@ -0,0 +1,19 @@ +// Mincer asset helper functions +// +// This must be imported into a .css.ejs.scss file. +// Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. + + +@function twbs-font-path($path) { + // do something like following + // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" + // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" + // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" + @return "<%- asset_path("#{$path}".replace(/[#?].*$/, '')) + "#{$path}".replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; +} + +@function twbs-image-path($file) { + @return "<%- asset_path("#{$file}") %>"; +} + +$bootstrap-sass-asset-helper: true; diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-sprockets.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-sprockets.scss new file mode 100644 index 0000000..9fffc1e --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap-sprockets.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-path($path); +} + +@function twbs-image-path($path) { + @return image-path($path); +} + +$bootstrap-sass-asset-helper: true; diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap.scss new file mode 100644 index 0000000..89e3855 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/_bootstrap.scss @@ -0,0 +1,56 @@ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Core variables and mixins +@import "bootstrap/variables"; +@import "bootstrap/mixins"; + +// Reset and dependencies +@import "bootstrap/normalize"; +@import "bootstrap/print"; +@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap/forms"; +@import "bootstrap/buttons"; + +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +@import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap/panels"; +@import "bootstrap/responsive-embed"; +@import "bootstrap/wells"; +@import "bootstrap/close"; + +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +@import "bootstrap/carousel"; + +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_alerts.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_alerts.scss new file mode 100644 index 0000000..f9e69bd --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_alerts.scss @@ -0,0 +1,73 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: $alert-padding; + margin-bottom: $line-height-computed; + border: 1px solid transparent; + border-radius: $alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + color: inherit; // Specified for the h4 to prevent conflicts of changing $headings-color + } + + // Provide class for links that match alerts + .alert-link { + font-weight: $alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +// The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissable, +.alert-dismissible { + padding-right: ($alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); +} + +.alert-info { + @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); +} + +.alert-warning { + @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); +} + +.alert-danger { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_badges.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_badges.scss new file mode 100644 index 0000000..44d5dd6 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_badges.scss @@ -0,0 +1,68 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: $font-size-small; + font-weight: $badge-font-weight; + line-height: $badge-line-height; + color: $badge-color; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: $badge-bg; + border-radius: $badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + + .btn-xs &, + .btn-group-xs > .btn & { + top: 0; + padding: 1px 5px; + } + + // [converter] extracted a& to a.badge + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: $badge-active-color; + background-color: $badge-active-bg; + } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + + .nav-pills > li > a > & { + margin-left: 3px; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_breadcrumbs.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_breadcrumbs.scss new file mode 100644 index 0000000..67e39d9 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_breadcrumbs.scss @@ -0,0 +1,28 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + + > li { + display: inline-block; + + + li:before { + padding: 0 5px; + color: $breadcrumb-color; + // [converter] Workaround for https://github.com/sass/libsass/issues/1115 + $nbsp: "\00a0"; + content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space + } + } + + > .active { + color: $breadcrumb-active-color; + } +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_button-groups.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_button-groups.scss new file mode 100644 index 0000000..6a62faf --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_button-groups.scss @@ -0,0 +1,244 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + @include clearfix; + + .btn, + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + @include border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { @extend .btn-xs; } +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: $caret-width-large $caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 $caret-width-large $caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + @include clearfix; + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + @include border-top-radius($btn-border-radius-base); + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + @include border-top-radius(0); + @include border-bottom-radius($btn-border-radius-base); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + display: table-cell; + float: none; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } + } +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_buttons.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_buttons.scss new file mode 100644 index 0000000..62962d7 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_buttons.scss @@ -0,0 +1,168 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: $btn-font-weight; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); + @include user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + @include tab-focus; + } + } + + &:hover, + &:focus, + &.focus { + color: $btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + background-image: none; + outline: 0; + @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + @include opacity(.65); + @include box-shadow(none); + } + + // [converter] extracted a& to a.btn +} + +a.btn { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `` elements + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); +} +.btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); +} +// Success appears as green +.btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); +} +// Info appears as blue-green +.btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); +} +// Warning appears as orange +.btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + font-weight: 400; + color: $link-color; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + @include box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: $link-hover-decoration; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} +.btn-xs { + @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_carousel.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_carousel.scss new file mode 100644 index 0000000..684360f --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_carousel.scss @@ -0,0 +1,272 @@ +@use "sass:math"; +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + + > .item { + position: relative; + display: none; + @include transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + @include img-responsive; + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + @include transition-transform(0.6s ease-in-out); + @include backface-visibility(hidden); + @include perspective(1000px); + + &.next, + &.active.right { + @include translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + @include translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + @include translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: $carousel-control-width; + font-size: $carousel-control-font-size; + color: $carousel-control-color; + text-align: center; + text-shadow: $carousel-text-shadow; + background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug + @include opacity($carousel-control-opacity); + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + @include gradient-horizontal($start-color: rgba(0, 0, 0, .5), $end-color: rgba(0, 0, 0, .0001)); + } + &.right { + right: 0; + left: auto; + @include gradient-horizontal($start-color: rgba(0, 0, 0, .0001), $end-color: rgba(0, 0, 0, .5)); + } + + // Hover/focus state + &:hover, + &:focus { + color: $carousel-control-color; + text-decoration: none; + outline: 0; + @include opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; + } + + .icon-prev { + &:before { + content: "\2039";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: "\203a";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0, 0, 0, 0); // IE9 + + border: 1px solid $carousel-indicator-border-color; + border-radius: 10px; + } + + .active { + width: 12px; + height: 12px; + margin: 0; + background-color: $carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: $carousel-caption-color; + text-align: center; + text-shadow: $carousel-text-shadow; + + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: $screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: ($carousel-control-font-size * 1.5); + height: ($carousel-control-font-size * 1.5); + margin-top: math.div($carousel-control-font-size, -2); + font-size: ($carousel-control-font-size * 1.5); + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: math.div($carousel-control-font-size, -2); + } + .glyphicon-chevron-right, + .icon-next { + margin-right: math.div($carousel-control-font-size, -2); + } + } + + // Show and left align the captions + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_close.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_close.scss new file mode 100644 index 0000000..a858a8f --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_close.scss @@ -0,0 +1,37 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: ($font-size-base * 1.5); + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + @include opacity(.2); + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + cursor: pointer; + @include opacity(.5); + } + + // [converter] extracted button& to button.close +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + appearance: none; +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_code.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_code.scss new file mode 100644 index 0000000..6299ddb --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_code.scss @@ -0,0 +1,70 @@ +@use "sass:math"; +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + border-radius: $border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: $kbd-color; + background-color: $kbd-bg; + border-radius: $border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: 700; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: math.div(($line-height-computed - 1), 2); + margin: 0 0 math.div($line-height-computed, 2); + font-size: ($font-size-base - 1); // 14px to 13px + line-height: $line-height-base; + color: $pre-color; + word-break: break-all; + word-wrap: break-word; + background-color: $pre-bg; + border: 1px solid $pre-border-color; + border-radius: $border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: $pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_component-animations.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_component-animations.scss new file mode 100644 index 0000000..ca4d6b0 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_component-animations.scss @@ -0,0 +1,38 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { display: block; } + // [converter] extracted tr&.in to tr.collapse.in + // [converter] extracted tbody&.in to tbody.collapse.in +} + +tr.collapse.in { display: table-row; } + +tbody.collapse.in { display: table-row-group; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition-property(height, visibility); + @include transition-duration(.35s); + @include transition-timing-function(ease); +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_dropdowns.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_dropdowns.scss new file mode 100644 index 0000000..0a5898a --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_dropdowns.scss @@ -0,0 +1,213 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base dashed; + border-top: $caret-width-base solid \9; // IE8 + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: $zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + font-size: $font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + list-style: none; + background-color: $dropdown-bg; + background-clip: padding-box; + border: 1px solid $dropdown-fallback-border; // IE8 fallback + border: 1px solid $dropdown-border; + border-radius: $border-radius-base; + @include box-shadow(0 6px 12px rgba(0, 0, 0, .175)); + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + @include nav-divider($dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: $line-height-base; + color: $dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + + &:hover, + &:focus { + color: $dropdown-link-hover-color; + text-decoration: none; + background-color: $dropdown-link-hover-bg; + } + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: $dropdown-link-active-color; + text-decoration: none; + background-color: $dropdown-link-active-bg; + outline: 0; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: $dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + cursor: $cursor-disabled; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + right: 0; + left: auto; // Reset the default from `.dropdown-menu` +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + right: auto; + left: 0; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: ($zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + content: ""; + border-top: 0; + border-bottom: $caret-width-base dashed; + border-bottom: $caret-width-base solid \9; // IE8 + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: $grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + right: 0; left: auto; + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + left: 0; right: auto; + } + } +} diff --git a/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_forms.scss b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_forms.scss new file mode 100644 index 0000000..00951b3 --- /dev/null +++ b/ckanext/ubdc/public/base/vendor/bootstrap/stylesheets/bootstrap/_forms.scss @@ -0,0 +1,608 @@ +@use "sass:math"; +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: $line-height-computed; + font-size: ($font-size-base * 1.5); + line-height: inherit; + color: $legend-color; + border: 0; + border-bottom: 1px solid $legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: 700; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +input[type="search"] { + // Override content-box in Normalize (* isn't specific enough) + @include box-sizing(border-box); + + // Search inputs in iOS + // + // This overrides the extra rounded corners on search inputs in iOS so that our + // `.form-control` class can properly style them. Note that this cannot simply + // be added to `.form-control` as it's not specific enough. For details, see + // https://github.com/twbs/bootstrap/issues/11586. + -webkit-appearance: none; + appearance: none; +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; + + // Apply same disabled cursor tweak as for inputs + // Some special care is needed because \ No newline at end of file diff --git a/ckanext/ubdc/templates/home/snippets/popular.html b/ckanext/ubdc/templates/home/snippets/popular.html new file mode 100644 index 0000000..58310fb --- /dev/null +++ b/ckanext/ubdc/templates/home/snippets/popular.html @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/ckanext/ubdc/templates/home/snippets/providers.html b/ckanext/ubdc/templates/home/snippets/providers.html new file mode 100644 index 0000000..f550c06 --- /dev/null +++ b/ckanext/ubdc/templates/home/snippets/providers.html @@ -0,0 +1,21 @@ +
+
+

- DATA PROVIDERS -

+
+ {% set providers = h.get_featured_organizations(6) %} +
+ {% for provider in providers %} + {% set url = h.url_for('organization' ~ '.read', id=provider.name) %} + {% if provider.image_display_url %} +
+ + ACT Government + +
+ {% endif %} + {% endfor %} +
+

See more →

+
+
+
\ No newline at end of file diff --git a/ckanext/ubdc/templates/home/snippets/stats.html b/ckanext/ubdc/templates/home/snippets/stats.html new file mode 100644 index 0000000..8080d4c --- /dev/null +++ b/ckanext/ubdc/templates/home/snippets/stats.html @@ -0,0 +1,74 @@ +
+
+
+
+ +
+
+

UBDC DATATA PROTAL

+

IN NUMBERS

+
+
+ +
+
+
+ {{ h.get_site_statistics().dataset_count }} +
+
+ {% block stats_datasets %}{{ _('Datasets') }}{% endblock %} +
+
+
+ +
+
+
+ {{ h.resources_count() or 0 }} +
+
+ {% block stats_resources %}{{ _('Resources') }}{% endblock %} +
+
+
+ +
+
+
+ {{ h.get_site_statistics().group_count }} +
+
+ {% block stats_groups %}{{ _('Themes') }}{% endblock %} +
+
+
+ +
+
+
+ {{ h.tags_count().count or 0 }} +
+
+ {{ _('Tags') }} +
+
+
+ +
+
+
+ {{ h.get_site_statistics().organization_count }} +
+
+ {{ _('Data Providers') }} +
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/ckanext/ubdc/templates/home/snippets/themes.html b/ckanext/ubdc/templates/home/snippets/themes.html new file mode 100644 index 0000000..0d941c6 --- /dev/null +++ b/ckanext/ubdc/templates/home/snippets/themes.html @@ -0,0 +1,57 @@ +
+
+
+
+
+
+

- {{ _('Themes') }} -

+
+
+
+
+ {% set themes = h.get_featured_groups(6) %} + {% for theme in themes %} + {% set url = h.url_for('group' ~ '.read', id=theme.name) %} + +
+
+ {% if loop.index < 4 %}
+
0 Dataset
+
+

{{ theme.title }}

+

+ {{ theme.description | truncate(80) }} +

+ SEE DATASETS +
+
+ Generic placeholder image +
+
+ {% else %} +
+
{{theme.package_count}} Datasets
+
+ Generic placeholder image +
+
+

{{ theme.title }}

+

+ {{ theme.description | truncate(80) }} +

+ SEE DATASETS +
+
+ {% endif %} +
+
+ {% endfor %} +
+

See more →

+
+
+
\ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..864bfcf --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,44 @@ +const path = require("path"); +const { src, watch, dest, parallel } = require("gulp"); +const sass = require("gulp-sass")(require("sass")); +const if_ = require("gulp-if"); +const sourcemaps = require("gulp-sourcemaps"); +const rename = require("gulp-rename"); + +const with_sourcemaps = () => !!process.env.DEBUG; +const renamer = (path) => { + const variant = process.argv[3]; + if (variant) { + // convert main/main-rtl into green/green-rtl + path.basename = path.basename.replace("main", variant.slice(2)); + } + return path; +}; + +const bootstrapScss = () => + src([__dirname + "/node_modules/bootstrap-sass/assets/**/*", ]).pipe( + dest(__dirname + "/ckanext/ubdc/public/base/vendor/bootstrap/") + ); + + + +const build = () => + src([ + __dirname + "/ckanext/ubdc/public/base/scss/style.scss" + ]) + .pipe(if_(with_sourcemaps(), sourcemaps.init())) + .pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError)) + .pipe(if_(with_sourcemaps(), sourcemaps.write())) + .pipe(rename(renamer)) + .pipe(dest(__dirname + "/ckanext/ubdc/assets/css")); + +const watchSource = () => + watch( + __dirname + "/ckanext/ubdc/public/base/scss/**/*.scss", + { ignoreInitial: false }, + build + ); + +exports.build = build; +exports.watch = watchSource; +exports.bootstrapScss = bootstrapScss; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..c369a1a --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "ckanext-ubdc", + "version": "1.0.0", + "main": "index.js", + "repository": "https://github.com/datopian/ckanext-ubdc.git", + "author": "sagargg ", + "license": "MIT", + "dependencies": { + "bootstrap-sass": "^3.4.1", + "gulp": "^4.0.2", + "gulp-if": "^3.0.0", + "gulp-rename": "^2.0.0", + "gulp-sass": "^5.0.0", + "gulp-sourcemaps": "^2.6.5", + "sass": "^1.35.2" + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..d86d523 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2566 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@gulp-sourcemaps/identity-map@1.X": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" + integrity sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ== + dependencies: + acorn "^5.0.3" + css "^2.2.1" + normalize-path "^2.1.1" + source-map "^0.6.0" + through2 "^2.0.3" + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + integrity sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A== + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + +acorn@5.X, acorn@^5.0.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw== + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw== + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA== + dependencies: + buffer-equal "^1.0.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA== + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw== + dependencies: + make-iterator "^1.0.0" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA== + +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw== + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw== + dependencies: + async-done "^1.2.2" + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg== + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bootstrap-sass@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz#742cc8f4286303ae9fe8e4c95237321eae73766c" + integrity sha512-vPgFnGMp1jWZZupOND65WS6mkR8rxhJxndT/AcMbqcq1hHMdkcH4sMPhznLzzoHOHkSCrd6J9F8pWBriPCKP2Q== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +buffer-equal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" + integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== + +"chokidar@>=3.0.0 <4.0.0": + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^2.0.0: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag== + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA== + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +convert-source-map@1.X, convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +copy-props@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.5.tgz#03cf9ae328d4ebb36f8f1d804448a6af9ee3f2d2" + integrity sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw== + dependencies: + each-props "^1.3.2" + is-plain-object "^5.0.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +css@2.X, css@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +debug-fabulous@1.X: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" + integrity sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg== + dependencies: + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" + +debug@3.X: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ== + +define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== + +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== + +duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +duplexify@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + +each-props@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1, es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== + dependencies: + homedir-polyfill "^1.0.1" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fast-levenshtein@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" + integrity sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g== + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + +flush-write-stream@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg== + dependencies: + for-in "^1.0.1" + +fork-stream@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" + integrity sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ== + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw== + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-watcher@^5.0.3: + version "5.0.5" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" + integrity sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + normalize-path "^3.0.0" + object.defaults "^1.1.0" + +glob@^7.1.1: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +gulp-cli@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" + integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.4.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.2.0" + yargs "^7.1.0" + +gulp-if@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-3.0.0.tgz#6c3e7edc8bafadc34f2ebecb314bf43324ba1e40" + integrity sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw== + dependencies: + gulp-match "^1.1.0" + ternary-stream "^3.0.0" + through2 "^3.0.1" + +gulp-match@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz#552b7080fc006ee752c90563f9fec9d61aafdf4f" + integrity sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ== + dependencies: + minimatch "^3.0.3" + +gulp-rename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" + integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ== + +gulp-sass@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-5.1.0.tgz#bb3d9094f39a260f62a8d0a6797b95ab826f9663" + integrity sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ== + dependencies: + lodash.clonedeep "^4.5.0" + picocolors "^1.0.0" + plugin-error "^1.0.1" + replace-ext "^2.0.0" + strip-ansi "^6.0.1" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-sourcemaps@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" + integrity sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg== + dependencies: + "@gulp-sourcemaps/identity-map" "1.X" + "@gulp-sourcemaps/map-sources" "1.X" + acorn "5.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "1.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "~0.6.0" + strip-bom-string "1.X" + through2 "2.X" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw== + dependencies: + glogg "^1.0.0" + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +immutable@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA== + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +just-debounce@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" + integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ== + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow== + dependencies: + flush-write-stream "^1.0.2" + +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA== + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + +memoizee@0.4.X: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +minimatch@^3.0.3, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + +nan@^2.12.1: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +object-assign@4.X: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.0.4, object.assign@^4.1.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA== + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w== + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw== + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw== + dependencies: + readable-stream "^2.0.1" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q== + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ== + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg== + dependencies: + path-root-regex "^0.1.0" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@2 || 3", readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA== + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +replace-ext@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== + +replace-ext@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-2.0.0.tgz#9471c213d22e1bcc26717cd6e50881d88f812b06" + integrity sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug== + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg== + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A== + dependencies: + value-or-function "^3.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +sass@^1.35.2: + version "1.56.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.56.1.tgz#94d3910cd468fd075fa87f5bb17437a0b617d8a7" + integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ== + dependencies: + sver-compat "^1.5.0" + +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +"source-map-js@>=0.6.2 <2.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.1, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.12" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom-string@1.X: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg== + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +ternary-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-3.0.0.tgz#7951930ea9e823924d956f03d516151a2d516253" + integrity sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ== + dependencies: + duplexify "^4.1.1" + fork-stream "^0.0.4" + merge-stream "^2.0.0" + through2 "^3.0.1" + +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== + +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA== + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q== + dependencies: + through2 "^2.0.3" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw== + +undertaker@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.3.0.tgz#363a6e541f27954d5791d6fa3c1d321666f86d18" + integrity sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + fast-levenshtein "^1.0.0" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8flags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" + integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg== + +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA== + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw== + dependencies: + source-map "^0.5.1" + +vinyl@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" + integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + +which@^1.2.14: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +yargs-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.1.tgz#7ede329c1d8cdbbe209bd25cdb990e9b1ebbb394" + integrity sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA== + dependencies: + camelcase "^3.0.0" + object.assign "^4.1.0" + +yargs@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" + integrity sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA== + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.1"