whistle.vase
Version:
用于mock数据的whistle插件
547 lines (505 loc) • 2.3 MB
JavaScript
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(1);
__webpack_require__(13);
__webpack_require__(15);
var $ = window.jQuery = __webpack_require__(17); //for bootstrap
__webpack_require__(18);
var React = __webpack_require__(19);
var ReactDOM = __webpack_require__(59);
var List = __webpack_require__(206);
var ListModal = __webpack_require__(285);
var EditorSettings = __webpack_require__(286);
var util = __webpack_require__(217);
var storage = __webpack_require__(284);
var dataCenter = __webpack_require__(289);
var MAX_FILE_SIZE = 1024 * 1024 * 5;
var Index = React.createClass({displayName: "Index",
getInitialState: function() {
var data = this.props.data;
var modal = {
list: [],
data: {}
};
var hasActive;
data.list.forEach(function(item) {
modal.list.push(item.name);
var active = item.name == data.activeName;
if (active) {
hasActive = true;
}
modal.data[item.name] = {
name: item.name,
type: item.type,
value: item.value,
active: active
};
});
if (!hasActive && (item = data.list[0])) {
modal.data[item.name].active = true;
}
return {
modal: new ListModal(modal.list, modal.data),
engineList: data.engineList,
theme: storage.get('theme'),
fontSize: storage.get('fontSize'),
showLineNumbers: storage.get('showLineNumbers')
};
},
add: function(e) {
var self = this;
if (self._creating || !self.isEnterPressed(e)) {
return;
}
var dialog = $(ReactDOM.findDOMNode(this.refs.createTpl));
var input = dialog.find('.w-tpl-name');
if (!self._checkTplName(input)) {
return;
}
var name = $.trim(input.val());
var modal = self.state.modal;
if (modal.exists(name)) {
alert('`' + name + '` already exists');
input.select().focus();
return;
}
var typeBox = dialog.find('.w-template-type');
var type = typeBox.find('input:checked').attr('data-type') || 'default';
self._creating = true;
dataCenter.add({
name: name,
type: type
}, function(data) {
self._creating = false;
if (!data || data.ec !== 0) {
util.showSystemError();
return;
}
input.val('');
var item = modal.add(name, '');
if (item) {
item.type = type;
modal.setActive(item.name);
}
dialog.modal('hide');
self.setState({});
});
},
setValue: function(item) {
var self = this;
if (!item.changed) {
self.showEditDialog();
return;
}
var modal = self.state.modal;
dataCenter.setValue(item, function(data) {
if (!data || data.ec !== 0) {
util.showSystemError();
return;
}
modal.setChanged(item.name, false);
self.setState({});
});
},
save: function() {
this.state.modal
.getChangedList()
.forEach(this.setValue);
},
format: function() {
var modal = this.state.modal;
var activeItem = modal.getActive();
if (!activeItem) {
return;
}
var data = util.parseRawJson(activeItem.value);
if (data) {
var value = JSON.stringify(data, null, ' ');
if (value === activeItem.value) {
return;
}
activeItem.value = value;
activeItem.changed = true;
this.setState({});
}
},
showEditDialog: function() {
var activeItem = this.state.modal.getActive();
if (activeItem) {
this._showTplDialog($(ReactDOM.findDOMNode(this.refs.editTpl)), activeItem);
}
},
edit: function(e) {
var self = this;
if (self._editing || !self.isEnterPressed(e)) {
return;
}
var modal = self.state.modal;
var activeItem = modal.getActive();
if (!activeItem) {
return;
}
var dialog = $(ReactDOM.findDOMNode(this.refs.editTpl));
var input = dialog.find('.w-tpl-name');
if (!self._checkTplName(input)) {
return;
}
var name = $.trim(input.val());
if (modal.exists(name) && activeItem.name != name) {
alert('`' + name + '` already exists');
input.select().focus();
return;
}
var typeBox = dialog.find('.w-template-type');
var type = typeBox.find('input:checked').attr('data-type') || 'default';
self._editing = true;
dataCenter.edit({
name: activeItem.name,
type: activeItem.type,
newName: name,
newType: type
}, function(data) {
self._editing = false;
if (!data || data.ec !== 0) {
util.showSystemError();
return;
}
input.val('');
activeItem.type = type;
modal.rename(activeItem.name, name);
dialog.modal('hide');
self.setState({});
});
},
isEnterPressed: function(e) {
return e.type != 'keydown' || e.keyCode == 13;
},
convertName: function(name) {
if (!name) {
return '';
}
return name.trim().replace(/[^\w.\-]+/g, '').substring(0, 64);
},
_checkTplName: function(input) {
var rawName = input.val().trim();
var name = this.convertName(rawName);
if (name != rawName) {
input.val(name);
}
if (!name) {
alert('Name cannot be empty');
input.select().focus();
return false;
}
return true;
},
_showTplDialog: function(dialog, data) {
var typeBox = dialog.find('.w-template-type');
var boxes = typeBox.find('input:checked');
var nameInput = dialog.find('.w-tpl-name');
if (data) {
typeBox.find('input[data-type=' + data.type + ']').prop('checked', true);
dialog.find('.w-tpl-name').val(data.name);
} else if (!boxes.length) {
typeBox.find('input:first').prop('checked', true);
}
dialog.modal('show');
setTimeout(function() {
nameInput.select().focus();
}, 300);
},
showTplSettingsDialog: function() {
$(ReactDOM.findDOMNode(this.refs.tplSettingsDialog)).modal('show');
},
remove: function() {
var self = this;
var modal = self.state.modal;
var data = modal.getActive();
if (!data || !confirm('Confirm delete `' + data.name + '`?')) {
return;
}
dataCenter.remove(data, function(result) {
if (!result || result.ec !== 0) {
util.showSystemError();
return;
}
var next = modal.getSibling(data.name);
modal.remove(data.name);
if (next) {
modal.setActive(next.name, true);
}
self.setState({});
});
},
showCreateTplDialog: function() {
this._showTplDialog($(ReactDOM.findDOMNode(this.refs.createTpl)));
},
uploadDataForm: function(data) {
var file = data.get('importData');
if (!file || !/\.(txt|json)$/i.test(file.name)) {
return alert('Only supports .txt, .json file.');
}
if (file.size > MAX_FILE_SIZE) {
return alert('The file size can not exceed 5m.');
}
var self = this;
var modal = self.state.modal;
for (var i = 0, len = modal.list.length; i < len; ++i) {
var item = modal.data[modal.list[i]];
if (item && item.changed) {
if (!confirm('Importing data will lose the currently unsaved data.\nDo you want to continue?')) {
return;
}
break;
}
}
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(){
try {
var result = JSON.parse(this.result);
if (!Array.isArray(result)) {
return;
}
var params;
result.forEach(function(item) {
if (item && util.isString(item.name, true) && util.isString(item.type, true)) {
params = params || [];
params.push({
name: item.name,
value: util.toString(item.value),
type: item.type
});
}
});
if (!params) {
return alert('No data.');
}
dataCenter.importData({
list: JSON.stringify(params)
}, function(data) {
if (!data) {
return alert('Server internal error, try again later.');
}
var map = {};
var list = data.list.map(function(item) {
map[item.name] = item;
return item.name;
});
self.state.modal.update(list, map);
self.setState({});
});
} catch (e) {
alert('Incorrect file format.');
}
};
},
importData: function() {
this.uploadDataForm(new FormData(ReactDOM.findDOMNode(this.refs.importDataForm)));
ReactDOM.findDOMNode(this.refs.importData).value = '';
},
clickImport: function() {
ReactDOM.findDOMNode(this.refs.importData).click();
},
onDrop: function(e) {
var files = e.dataTransfer && e.dataTransfer.files;
if (!files || !files.length) {
return;
}
var data = new FormData();
data.append('importData', files[0]);
this.uploadDataForm(data);
e.preventDefault();
},
onThemeChange: function(e) {
var theme = e.target.value;
storage.set('theme', theme);
this.setState({
theme: theme
});
},
onFontSizeChange: function(e) {
var fontSize = e.target.value;
storage.set('fontSize', fontSize);
this.setState({
fontSize: fontSize
});
},
onLineNumberChange: function(e) {
var showLineNumbers = e.target.checked;
storage.set('showLineNumbers', showLineNumbers);
this.setState({
showLineNumbers: showLineNumbers
});
},
render: function() {
var state = this.state;
var theme = state.theme || 'cobalt';
var fontSize = state.fontSize || '14px';
var showLineNumbers = state.showLineNumbers || false;
var activeItem = this.state.modal.getActive();
var engineName;
if (activeItem) {
engineName = React.createElement("span", {className: "w-engine-name"}, "Engine(", React.createElement("a", {href: 'https://github.com/whistle-plugins/whistle.vase#' + activeItem.type.toLowerCase(), target: "_blank"}, activeItem.type), ")");
}
return (React.createElement("div", {className: "container orient-vertical-box"},
React.createElement("div", {className: "w-menu"},
React.createElement("a", {onClick: this.clickImport, className: "w-import-menu", href: "javascript:;", draggable: "false"},
React.createElement("span", {className: "glyphicon glyphicon-import"}), "Import"
),
React.createElement("a", {className: "w-export-menu", href: "cgi-bin/export", target: "_blank", draggable: "false"},
React.createElement("span", {className: "glyphicon glyphicon-export"}), "Export"
),
React.createElement("a", {className: "w-create-menu", href: "javascript:;", onClick: this.showCreateTplDialog}, React.createElement("span", {className: "glyphicon glyphicon-plus", draggable: "false"}), "Create"),
React.createElement("a", {className: "w-edit-menu", href: "javascript:;", onClick: this.showEditDialog}, React.createElement("span", {className: "glyphicon glyphicon-edit", draggable: "false"}), "Edit"),
React.createElement("a", {className: "w-remove-menu", href: "javascript:;", onClick: this.remove}, React.createElement("span", {className: "glyphicon glyphicon-trash", draggable: "false"}), "Delete"),
React.createElement("a", {className: "w-save-menu", href: "javascript:;", onClick: this.save}, React.createElement("span", {className: "glyphicon glyphicon-save-file", draggable: "false"}), "Save"),
React.createElement("a", {className: "w-save-menu", href: "javascript:;", onClick: this.format}, React.createElement("span", {className: "glyphicon glyphicon-ok-sign", draggable: "false"}), "Format"),
React.createElement("a", {className: "w-settings-menu", href: "javascript:;", onClick: this.showTplSettingsDialog}, React.createElement("span", {className: "glyphicon glyphicon-cog", draggable: "false"}), "Settings"),
React.createElement("a", {className: "w-help-menu", href: "https://github.com/whistle-plugins/whistle.vase#whistlevase", target: "_blank"}, React.createElement("span", {className: "glyphicon glyphicon-question-sign"}), "Help"),
engineName
),
React.createElement(List, {onDrop: this.onDrop,
theme: theme, fontSize: fontSize, lineNumbers: showLineNumbers, onSelect: this.setValue, modal: this.state.modal, className: "w-data-list"}),
React.createElement("div", {ref: "createTpl", className: "modal fade w-create-tpl"},
React.createElement("div", {className: "modal-dialog"},
React.createElement("div", {className: "modal-content"},
React.createElement("ul", {className: "modal-body"},
React.createElement("li", {className: "w-template-name"},
React.createElement("label", {className: "w-tpl-label"}, "Name:"), React.createElement("input", {onKeyDown: this.add, placeholder: "template name", type: "text", className: "form-control w-tpl-name", maxLength: "64"})
),
React.createElement("li", {className: "w-template-type"},
React.createElement("label", {className: "w-tpl-label"}, "Engine:"),
state.engineList.map(function(name) {
return (
React.createElement("label", {key: name, "data-name": name}, React.createElement("input", {type: "radio", "data-type": name, name: "tplName"}), name)
);
}), React.createElement("a", {title: "Help", className: "glyphicon glyphicon-question-sign w-vase-help", href: "https://github.com/whistle-plugins/whistle.vase#whistlevase", target: "_blank"})
)
),
React.createElement("div", {className: "modal-footer"},
React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Cancel"),
React.createElement("button", {onClick: this.add, type: "button", className: "btn btn-primary"}, "Confirm")
)
)
)
),
React.createElement("div", {ref: "editTpl", className: "modal fade w-create-tpl"},
React.createElement("div", {className: "modal-dialog"},
React.createElement("div", {className: "modal-content"},
React.createElement("ul", {className: "modal-body"},
React.createElement("li", {className: "w-template-name"},
React.createElement("label", {className: "w-tpl-label"}, "Name:"), React.createElement("input", {onKeyDown: this.edit, placeholder: "template name", type: "text", className: "form-control w-tpl-name", maxLength: "64"})
),
React.createElement("li", {className: "w-template-type"},
React.createElement("label", {className: "w-tpl-label"}, "Engine:"),
state.engineList.map(function(name) {
return (
React.createElement("label", {key: name, "data-name": name}, React.createElement("input", {type: "radio", "data-type": name, name: "tplName"}), name)
);
}), React.createElement("a", {title: "Help", className: "glyphicon glyphicon-question-sign w-vase-help", href: "https://github.com/whistle-plugins/whistle.vase#whistlevase", target: "_blank"})
)
),
React.createElement("div", {className: "modal-footer"},
React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Cancel"),
React.createElement("button", {onClick: this.edit, type: "button", className: "btn btn-primary"}, "Confirm")
)
)
)
),
React.createElement("div", {ref: "tplSettingsDialog", className: "modal fade w-tpl-settings-dialog"},
React.createElement("div", {className: "modal-dialog"},
React.createElement("div", {className: "modal-content"},
React.createElement("div", {className: "modal-body"},
React.createElement(EditorSettings, {theme: theme, fontSize: fontSize, lineNumbers: showLineNumbers,
onThemeChange: this.onThemeChange,
onFontSizeChange: this.onFontSizeChange,
onLineNumberChange: this.onLineNumberChange})
),
React.createElement("div", {className: "modal-footer"},
React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Close")
)
)
)
),
React.createElement("form", {ref: "importDataForm", encType: "multipart/form-data", style: {display: 'none'}},
React.createElement("input", {ref: "importData", onChange: this.importData, type: "file", name: "importData", accept: ".txt,.json"})
)
));
}
});
(function init() {
dataCenter.init(function(data) {
if (!data || !data.list) {
return setTimeout(init, 1000);
}
ReactDOM.render(React.createElement(Index, {data: data}), $('#main')[0]);
});
})();
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(2);
__webpack_require__(11);
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(3);
if(typeof content === 'string') content = [[module.id, content, '']];
// add the styles to the DOM
var update = __webpack_require__(10)(content, {});
if(content.locals) module.exports = content.locals;
// Hot Module Replacement
if(false) {
// When the styles change, update the <style> tags
if(!content.locals) {
module.hot.accept("!!../../../css-loader/index.js!./bootstrap.css", function() {
var newContent = require("!!../../../css-loader/index.js!./bootstrap.css");
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
update(newContent);
});
}
// When the module is disposed, remove the <style> tags
module.hot.dispose(function() { update(); });
}
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(4)();
// imports
// module
exports.push([module.id, "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n -moz-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: \"Glyphicons Halflings\";\n src: url(" + __webpack_require__(5) + ");\n src: url(" + __webpack_require__(5) + "?#iefix) format(\"embedded-opentype\"), url(" + __webpack_require__(6) + ") format(\"woff2\"), url(" + __webpack_require__(7) + ") format(\"woff\"), url(" + __webpack_require__(8) + ") format(\"truetype\"), url(" + __webpack_require__(9) + "#glyphicons_halflingsregular) format(\"svg\");\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: \"Glyphicons Halflings\";\n font-style: normal;\n font-weight: 400;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"*\";\n}\n.glyphicon-plus:before {\n content: \"+\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20AC\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270F\";\n}\n.glyphicon-glass:before {\n content: \"\\E001\";\n}\n.glyphicon-music:before {\n content: \"\\E002\";\n}\n.glyphicon-search:before {\n content: \"\\E003\";\n}\n.glyphicon-heart:before {\n content: \"\\E005\";\n}\n.glyphicon-star:before {\n content: \"\\E006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\E007\";\n}\n.glyphicon-user:before {\n content: \"\\E008\";\n}\n.glyphicon-film:before {\n content: \"\\E009\";\n}\n.glyphicon-th-large:before {\n content: \"\\E010\";\n}\n.glyphicon-th:before {\n content: \"\\E011\";\n}\n.glyphicon-th-list:before {\n content: \"\\E012\";\n}\n.glyphicon-ok:before {\n content: \"\\E013\";\n}\n.glyphicon-remove:before {\n content: \"\\E014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\E015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\E016\";\n}\n.glyphicon-off:before {\n content: \"\\E017\";\n}\n.glyphicon-signal:before {\n content: \"\\E018\";\n}\n.glyphicon-cog:before {\n content: \"\\E019\";\n}\n.glyphicon-trash:before {\n content: \"\\E020\";\n}\n.glyphicon-home:before {\n content: \"\\E021\";\n}\n.glyphicon-file:before {\n content: \"\\E022\";\n}\n.glyphicon-time:before {\n content: \"\\E023\";\n}\n.glyphicon-road:before {\n content: \"\\E024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\E025\";\n}\n.glyphicon-download:before {\n content: \"\\E026\";\n}\n.glyphicon-upload:before {\n content: \"\\E027\";\n}\n.glyphicon-inbox:before {\n content: \"\\E028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\E029\";\n}\n.glyphicon-repeat:before {\n content: \"\\E030\";\n}\n.glyphicon-refresh:before {\n content: \"\\E031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\E032\";\n}\n.glyphicon-lock:before {\n content: \"\\E033\";\n}\n.glyphicon-flag:before {\n content: \"\\E034\";\n}\n.glyphicon-headphones:before {\n content: \"\\E035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\E036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\E037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\E038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\E039\";\n}\n.glyphicon-barcode:before {\n content: \"\\E040\";\n}\n.glyphicon-tag:before {\n content: \"\\E041\";\n}\n.glyphicon-tags:before {\n content: \"\\E042\";\n}\n.glyphicon-book:before {\n content: \"\\E043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\E044\";\n}\n.glyphicon-print:before {\n content: \"\\E045\";\n}\n.glyphicon-camera:before {\n content: \"\\E046\";\n}\n.glyphicon-font:before {\n content: \"\\E047\";\n}\n.glyphicon-bold:before {\n content: \"\\E048\";\n}\n.glyphicon-italic:before {\n content: \"\\E049\";\n}\n.glyphicon-text-height:before {\n content: \"\\E050\";\n}\n.glyphicon-text-width:before {\n content: \"\\E051\";\n}\n.glyphicon-align-left:before {\n content: \"\\E052\";\n}\n.glyphicon-align-center:before {\n content: \"\\E053\";\n}\n.glyphicon-align-right:before {\n content: \"\\E054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\E055\";\n}\n.glyphicon-list:before {\n content: \"\\E056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\E057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\E058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\E059\";\n}\n.glyphicon-picture:before {\n content: \"\\E060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\E062\";\n}\n.glyphicon-adjust:before {\n content: \"\\E063\";\n}\n.glyphicon-tint:before {\n content: \"\\E064\";\n}\n.glyphicon-edit:before {\n content: \"\\E065\";\n}\n.glyphicon-share:before {\n content: \"\\E066\";\n}\n.glyphicon-check:before {\n content: \"\\E067\";\n}\n.glyphicon-move:before {\n content: \"\\E068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\E069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\E070\";\n}\n.glyphicon-backward:before {\n content: \"\\E071\";\n}\n.glyphicon-play:before {\n content: \"\\E072\";\n}\n.glyphicon-pause:before {\n content: \"\\E073\";\n}\n.glyphicon-stop:before {\n content: \"\\E074\";\n}\n.glyphicon-forward:before {\n content: \"\\E075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\E076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\E077\";\n}\n.glyphicon-eject:before {\n content: \"\\E078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\E079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\E080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\E081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\E082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\E083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\E084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\E085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\E086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\E087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\E088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\E089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\E090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\E091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\E092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\E093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\E094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\E095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\E096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\E097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\E101\";\n}\n.glyphicon-gift:before {\n content: \"\\E102\";\n}\n.glyphicon-leaf:before {\n content: \"\\E103\";\n}\n.glyphicon-fire:before {\n content: \"\\E104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\E105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\E106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\E107\";\n}\n.glyphicon-plane:before {\n content: \"\\E108\";\n}\n.glyphicon-calendar:before {\n content: \"\\E109\";\n}\n.glyphicon-random:before {\n content: \"\\E110\";\n}\n.glyphicon-comment:before {\n content: \"\\E111\";\n}\n.glyphicon-magnet:before {\n content: \"\\E112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\E113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\E114\";\n}\n.glyphicon-retweet:before {\n content: \"\\E115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\E116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\E117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\E118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\E119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\E120\";\n}\n.glyphicon-hdd:before {\n content: \"\\E121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\E122\";\n}\n.glyphicon-bell:before {\n content: \"\\E123\";\n}\n.glyphicon-certificate:before {\n content: \"\\E124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\E125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\E126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\E127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\E128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\E129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\E130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\E131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\E132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\E133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\E134\";\n}\n.glyphicon-globe:before {\n content: \"\\E135\";\n}\n.glyphicon-wrench:before {\n content: \"\\E136\";\n}\n.glyphicon-tasks:before {\n content: \"\\E137\";\n}\n.glyphicon-filter:before {\n content: \"\\E138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\E139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\E140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\E141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\E142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\E143\";\n}\n.glyphicon-link:before {\n content: \"\\E144\";\n}\n.glyphicon-phone:before {\n content: \"\\E145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\E146\";\n}\n.glyphicon-usd:before {\n content: \"\\E148\";\n}\n.glyphicon-gbp:before {\n content: \"\\E149\";\n}\n.glyphicon-sort:before {\n content: \"\\E150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\E151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\E152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\E153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\E154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\E155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\E156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\E157\";\n}\n.glyphicon-expand:before {\n content: \"\\E158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\E159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\E160\";\n}\n.glyphicon-log-in:before {\n content: \"\\E161\";\n}\n.glyphicon-flash:before {\n content: \"\\E162\";\n}\n.glyphicon-log-out:before {\n content: \"\\E163\";\n}\n.glyphicon-new-window:before {\n content: \"\\E164\";\n}\n.glyphicon-record:before {\n content: \"\\E165\";\n}\n.glyphicon-save:before {\n content: \"\\E166\";\n}\n.glyphicon-open:before {\n content: \"\\E167\";\n}\n.glyphicon-saved:before {\n content: \"\\E168\";\n}\n.glyphicon-import:before {\n content: \"\\E169\";\n}\n.glyphicon-export:before {\n content: \"\\E170\";\n}\n.glyphicon-send:before {\n content: \"\\E171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\E172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\E173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\E174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\E175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\E176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\E177\";\n}\n.glyphicon-transfer:before {\n content: \"\\E178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\E179\";\n}\n.glyphicon-header:before {\n content: \"\\E180\";\n}\n.glyphicon-compressed:before {\n content: \"\\E181\";\n}\n.glyphicon-earphone:before {\n content: \"\\E182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\E183\";\n}\n.glyphicon-tower:before {\n content: \"\\E184\";\n}\n.glyphicon-stats:before {\n content: \"\\E185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\E186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\E187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\E188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\E189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\E190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\E191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\E192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\E193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\E194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\E195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\E197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\E198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\E199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\E200\";\n}\n.glyphicon-cd:before {\n content: \"\\E201\";\n}\n.glyphicon-save-file:before {\n content: \"\\E202\";\n}\n.glyphicon-open-file:before {\n content: \"\\E203\";\n}\n.glyphicon-level-up:before {\n content: \"\\E204\";\n}\n.glyphicon-copy:before {\n content: \"\\E205\";\n}\n.glyphicon-paste:before {\n content: \"\\E206\";\n}\n.glyphicon-alert:before {\n content: \"\\E209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\E210\";\n}\n.glyphicon-king:before {\n content: \"\\E211\";\n}\n.glyphicon-queen:before {\n content: \"\\E212\";\n}\n.glyphicon-pawn:before {\n content: \"\\E213\";\n}\n.glyphicon-bishop:before {\n content: \"\\E214\";\n}\n.glyphicon-knight:before {\n content: \"\\E215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\E216\";\n}\n.glyphicon-tent:before {\n content: \"\\26FA\";\n}\n.glyphicon-blackboard:before {\n content: \"\\E218\";\n}\n.glyphicon-bed:before {\n content: \"\\E219\";\n}\n.glyphicon-apple:before {\n content: \"\\F8FF\";\n}\n.glyphicon-erase:before {\n content: \"\\E221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231B\";\n}\n.glyphicon-lamp:before {\n content: \"\\E223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\E224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\E225\";\n}\n.glyphicon-scissors:before {\n content: \"\\E226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\E227\";\n}\n.glyphicon-btc:before {\n content: \"\\E227\";\n}\n.glyphicon-xbt:before {\n content: \"\\E227\";\n}\n.glyphicon-yen:before {\n content: \"\\A5\";\n}\n.glyphicon-jpy:before {\n content: \"\\A5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20BD\";\n}\n.glyphicon-rub:before {\n content: \"\\20BD\";\n}\n.glyphicon-scale:before {\n content: \"\\E230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\E231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\E232\";\n}\n.glyphicon-education:before {\n content: \"\\E233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\E234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\E235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\E236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\E237\";\n}\n.glyphicon-oil:before {\n content: \"\\E238\";\n}\n.glyphicon-grain:before {\n content: \"\\E239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\E240\";\n}\n.glyphicon-text-size:before {\n content: \"\\E241\";\n}\n.glyphicon-text-color:before {\n content: \"\\E242\";\n}\n.glyphicon-text-background:before {\n content: \"\\E243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\E244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\E245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\E246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\E247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\E248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\E249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\E250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\E251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\E252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\E253\";\n}\n.glyphicon-console:before {\n content: \"\\E254\";\n}\n.glyphicon-superscript:before {\n content: \"\\E255\";\n}\n.glyphicon-subscript:before {\n content: \"\\E256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\E257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\E258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\E259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\E260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: 400;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: \"\\2014 \\A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: \"\\A0 \\2014\";\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull