From 67a02c33a24c256740b7057a2b69a817da72ef6f Mon Sep 17 00:00:00 2001 From: philc Date: Thu, 13 Apr 2023 07:46:35 +0200 Subject: [PATCH] update project with new architecture --- .gitignore | 3 +- app/middlewares/checkHeaders.js | 89 ++ .../middlewares}/hasAccessrighton.js | 8 +- .../middlewares}/isAuthenticated.js | 6 +- app/middlewares/lg/headers_en.json | 6 + .../checkdata.js => app/models/Checkjson.js | 157 +-- {models => app/models}/Contracts.js | 0 {models => app/models}/Messages.js | 8 +- .../Nationchains.js => app/models/Nations.js | 92 +- app/models/Odmdb.js | 262 +++++ {models => app/models}/Outputs.js | 2 +- {models => app/models}/OutputsDev.js | 2 +- {models => app/models}/Pagans.js | 26 +- {models => app/models}/Referentials.js | 0 {models => app/models}/Referentialssave.js | 0 {models => app/models}/Setup.js | 43 +- {models => app/models}/Tags.js | 0 app/models/Toolsbox.js | 646 ++++++++++++ app/models/Towns.js | 13 + {models => app/models}/Tribes.js | 3 +- {models => app/models}/UploadFiles.js | 0 .../models/lg/Checkjson_en.json | 2 +- app/models/lg/Odmdb_en.json | 4 + .../models/unittest/Checkjson.js | 20 +- app/models/unittest/Odmdb.js | 72 ++ {routes => app/routes}/messages.js | 2 +- {routes => app/routes}/nationchains.js | 0 app/routes/odmdb.js | 78 ++ {routes => app/routes}/outputs.js | 0 {routes => app/routes}/pagans.js | 0 {routes => app/routes}/referentials.js | 0 {routes => app/routes}/tags.js | 0 {routes => app/routes}/tribes.js | 0 {routes => app/routes}/uploadFiles.js | 0 apxtrib.js | 40 +- {setup => asupsetup}/ASUPconfig.jsold | 0 .../apixtribe.crabdance.com.mustache | 0 {setup => asupsetup}/config.mustache | 0 {setup => asupsetup}/configsetup.json | 0 .../apixpress/blockchains/blocks/0.json | 0 .../blockchains/nodes/apixpress.ndda.fr | 0 .../data/domain/apixpress/clientconf.mustache | 0 .../dataManagement/data/OrdersAction.json | 0 .../dataManagement/data/OutputsAction.json | 0 .../data/UploadFilesAction.json | 0 .../dataManagement/data/UsersAction.json | 0 .../dataManagement/data/gender.json | 0 .../dataManagement/data/missionpos.json | 0 .../dataManagement/data/profile.json | 0 .../dataManagement/data/role.json | 0 .../json/catalogueCompanies.json | 0 .../json/importcsvCompanies.json | 0 .../dataManagement/json/menuAdmin.json | 0 .../dataManagement/json/menuUser.json | 0 .../json/referentialsetting.json | 0 .../dataManagement/json/testref.json | 0 .../dataManagement/json/usersetting.json | 0 .../dataManagement/object/action.json | 0 .../dataManagement/object/basic.json | 0 .../dataManagement/object/basicnolang.json | 0 .../dataManagement/object/cards.json | 0 .../dataManagement/object/chgpsw.json | 0 .../dataManagement/object/companies.json | 0 .../dataManagement/object/item.json | 0 .../dataManagement/object/userOperator.json | 0 .../dataManagement/object/users.json | 0 .../dataManagementBackup/object/users.json | 0 .../referentials/fr/object/users.json | 0 .../apixpress/users/searchindex/emails.json | 0 .../apixpress/users/searchindex/logins.json | 0 .../apixpress/users/searchindex/uids.json | 0 .../www/app/webapp/app_index_fr.html | 2 +- .../www/app/webapp/css/app/styles.css | 0 .../www/app/webapp/css/fullscreen/styles.css | 0 .../www/app/webapp/css/simplebar.min.css | 0 .../www/app/webapp/fullscreen_auth_fr.html | 2 +- .../apixpress/www/app/webapp/js/auth.js | 6 +- .../apixpress/www/app/webapp/js/axios.min.js | 0 .../apixpress/www/app/webapp/js/bootstrap.js | 0 .../apixpress/www/app/webapp/js/checkdata.js | 68 +- .../www/app/webapp/js/feather.min.js | 0 .../apixpress/www/app/webapp/js/main.js | 0 .../www/app/webapp/js/mustache.min.js | 0 .../www/app/webapp/js/notification.js | 0 .../www/app/webapp/js/simplebar.min.js | 0 .../apixpress/www/app/webapp/js/state.js | 0 .../apixpress/www/app/webapp/manifest.json | 0 .../apixpress/www/app/webapp/scss/main.scss | 0 .../adminapixpress/adminapixpress.js | 0 .../adminapixpressactivity.mustache | 0 .../adminapixpressclientId.mustache | 0 .../adminapixpresssysinfo.mustache | 0 .../sidebaradminapixpress_fr.json | 0 .../ASUPPdata_sidebarAdminapixpress_fr.json | 0 .../static/components/appmesa/ASUPappmesa.js | 0 .../components/appmesa/appcontent.mustache | 0 .../components/appmesa/appmesa.mustache | 0 .../appmesa/appsidebarmenu.mustache | 0 .../components/appmesa/apptopbarmenu.mustache | 0 .../appmesa/apptopbarmessage.mustache | 0 .../appmesa/apptopbarnotification.mustache | 0 .../components/appmesa/data_appmesa_fr.json | 0 .../appmesa/data_sidebarAdminspace_fr.json | 0 .../components/appmesa/data_sidebar_fr.json | 0 .../components/appmesa/data_topbar_fr.json | 0 .../static/components/appmesa/message.js | 0 .../static/components/appmesa/referential.js | 0 .../components/appmesa/referential.mustache | 0 .../static/components/appmesa/reporting.js | 0 .../static/components/appmesa/search.js | 0 .../webapp/static/components/appmesa/tuto.js | 0 .../static/components/appmesa/userManager.js | 0 .../components/appusers/useractivity.mustache | 0 .../appusers/usersettingaccounttpl.mustache | 20 +- .../appusers/usersettingdeletetpl.mustache | 0 .../appusers/usersettingpasswordtpl.mustache | 0 .../appusers/usersettingprivacytpl.mustache | 0 .../app/webapp/static/components/flipbox.zip | Bin .../components/flipbox/data_flipbox_fr.json | 0 .../static/components/flipbox/flipbox.js | 0 .../components/flipbox/flipbox.mustache | 0 .../static/components/flipbox/flipbox.scss | 0 .../components/fullpage/fullpage.mustache | 0 .../notification/data_notiflist_fr.json | 0 .../components/notification/notification.js | 0 .../notification/notiflist.mustache | 0 .../userprofile/topbaruserLogout_fr.json | 0 .../userprofile/topbaruseractivity_fr.json | 0 .../userprofile/topbaruserprofile_fr.json | 0 .../userprofile/useractivity.mustache | 0 .../components/userprofile/userprofile.js | 0 .../userprofile/usersettingaccount.mustache | 20 +- .../userprofile/usersettingdeletetpl.mustache | 0 .../usersettingpasswordtpl.mustache | 0 .../usersettingprivacytpl.mustache | 0 .../verticaltab/data_verticaltab_fr.json | 0 .../verticaltab/verticaltab.mustache | 0 .../app/webapp/static/data/appmesa_fr.json | 0 .../webapp/static/data/appsimplehead_fr.json | 0 .../www/app/webapp/static/data/auth_fr.json | 0 .../www/app/webapp/static/data/fullpage.json | 0 .../static/data/fullscreensimplehead_fr.json | 0 .../app/webapp/static/data/notiflist_fr.json | 0 .../static/data/sidebarAdminapixpress_fr.json | 0 .../static/data/sidebarAdminspace_fr.json | 0 .../app/webapp/static/data/sidebar_fr.json | 0 .../static/data/topbarUserprofile_fr.json | 0 .../www/app/webapp/static/data/topbar_fr.json | 0 .../app/webapp/static/fonts/icofont/demo.html | 0 .../static/fonts/icofont/fonts/icofont.eot | Bin .../static/fonts/icofont/fonts/icofont.svg | 0 .../static/fonts/icofont/fonts/icofont.ttf | Bin .../static/fonts/icofont/fonts/icofont.woff | Bin .../static/fonts/icofont/fonts/icofont.woff2 | Bin .../webapp/static/fonts/icofont/icofont.css | 0 .../static/fonts/icofont/icofont.min.css | 0 .../webapp}/static/img/avataranonymous.png | Bin .../webapp}/static/img/avataranonymous1.png | Bin .../webapp}/static/img/avataranonymous2.png | Bin .../webapp/static/img/icons/iconX74x74.png | Bin .../app/webapp/static/img/logo/apixpress.png | Bin .../www/app/webapp/static/img/logo/ndda.png | Bin .../www/app/webapp/static/img/logo_footer.svg | 0 .../www/app/webapp/static/img/logo_menu.svg | 0 .../static/lastchange/app_index_fr.json | 0 .../static/lastchange/fullscreen_auth_fr.json | 0 .../www/app/www.apixpress.org/apixpress.png | Bin .../www/cdn}/chartegraphique/codecouleur.png | Bin .../www/cdn}/chartegraphique/favicon.png | Bin .../www/cdn/chartegraphique/logo_bgplein.png | Bin .../chartegraphique/logo_bgtransparent.png | Bin .../cdn/chartegraphique/logocarre_bgplein.png | Bin .../www/cdn/chartegraphique/planchelogo.svg | 0 .../apixpress/www/cdn/doc/.apiXpress.png | Bin .../domain/apixpress/www/cdn/doc/apiXpress.mm | 0 .../www/cdn}/fonts/Cantarell-Bold.ttf | Bin .../www/cdn}/fonts/Cantarell-BoldItalic.ttf | Bin .../www/cdn}/fonts/Cantarell-Italic.ttf | Bin .../www/cdn}/fonts/Cantarell-Regular.ttf | Bin .../domain/apixpress/www/cdn}/fonts/OFL.txt | 0 .../www/cdn}/fonts/cantarell-bold-demo.html | 0 .../cdn}/fonts/cantarell-bold-webfont.woff | Bin .../cdn}/fonts/cantarell-bold-webfont.woff2 | Bin .../cdn}/fonts/cantarell-bolditalic-demo.html | 0 .../fonts/cantarell-bolditalic-webfont.woff | Bin .../fonts/cantarell-bolditalic-webfont.woff2 | Bin .../www/cdn}/fonts/cantarell-italic-demo.html | 0 .../cdn}/fonts/cantarell-italic-webfont.woff | Bin .../cdn}/fonts/cantarell-italic-webfont.woff2 | Bin .../cdn}/fonts/cantarell-regular-demo.html | 0 .../cdn}/fonts/cantarell-regular-webfont.woff | Bin .../fonts/cantarell-regular-webfont.woff2 | Bin .../www/cdn}/fonts/generator_config.txt | 0 .../specimen_files/grid_12-825-55-15.css | 0 .../specimen_files/specimen_stylesheet.css | 0 .../apixpress/www/cdn}/fonts/stylesheet.css | 0 .../www/cdn}/img/avataranonymous.png | Bin .../www/cdn}/img/avataranonymous1.png | Bin .../www/cdn}/img/avataranonymous2.png | Bin .../www/cdn/img/icons/iconX74x74.png | Bin .../apixpress/www/cdn/img/logo/apixpress.png | Bin .../apixpress/www/cdn/img/logo/ndda.png | Bin .../apixpress/www/cdn/img/logo_footer.svg | 0 .../apixpress/www/cdn/img/logo_menu.svg | 0 ...BxJM6AnOfFcwl_vSXkN9Fu2YH4RBIMRJakt-OhuA0k | 0 ...-uQGmAgy6bWggASoIYoo2_O9BO-Pu6vrQpSIHJY7Ow | 0 ...dBJU5yetxUAhmxmzyKCdjhAkGAaL_oKY4ME_mxBN6I | 0 ...iSMi5lKG4u4wTljv3Ryr4rEKwNQyK--ExV3hZT5jgs | 0 .../.well-known/acme-challenge/test.html | 0 ...Ry8dNfRqdZ1kBLpdO6URuCQyF7If1_MFxLoWXzuOX0 | 0 .../www/cdn/public/basketunknown.png | Bin .../apixpress/www/cdn/public}/imgtg.png | Bin .../apixpress/www/cdn/public/index.html | 0 .../apixpress/www/cdn/public/js/article.js | 0 .../apixpress/www/cdn/public/js/auth.js | 0 .../apixpress/www/cdn/public/js/axios.min.js | 0 .../apixpress/www/cdn/public/js/checkdata.js | 68 +- .../apixpress/www/cdn/public/js/editor.js | 0 .../apixpress/www/cdn/public/js/editorsave.js | 0 .../apixpress/www/cdn/public/js/formsave.js | 0 .../apixpress/www/cdn/public/js/formvieux.js | 0 .../www/cdn/public/js/jquery-3.6.0.js | 4 +- .../apixpress/www/cdn/public/js/main.js | 0 .../www/cdn/public/js/mustache.min.js | 0 .../apixpress/www/cdn/public/js/plugins.js | 0 .../apixpress/www/cdn/public/js/questio.js | 0 .../www/cdn/public/js/tagASUPVOIRstate.js.js | 0 .../apixpress/www/cdn/public/js/tagold.js | 0 .../cdn/public/template/formgeneric.mustache | 0 .../cdn/public/template/questInput.mustache | 0 .../www/cdn/public}/testnetwork.html | 0 .../www/cdn/suiviprojetapiXpress.svg | 0 middlewares/checkHeaders.js | 88 -- models/Odmdb.js | 145 --- models/lg/odmdb_en.json | 4 - nationchains/deals/index/config.json | 4 + nationchains/deals/myblocks.json | 8 + .../objects => }/nations/ants.json | 0 nationchains/nations/index/config.json | 4 + .../nations/index/nations_nationId_all.json | 7 + nationchains/pagans/index/config.json | 4 + nationchains/schema/accessright.json | 1 + nationchains/schema/index/config.json | 4 + .../objects => }/schema/lg/nations_en.json | 0 .../objects => }/schema/lg/nations_fr.json | 0 .../objects => }/schema/lg/pagans_en.json | 0 .../objects => }/schema/lg/pagans_fr.json | 0 .../objects => }/schema/lg/towns_en.json | 0 .../objects => }/schema/lg/towns_fr.json | 0 .../objects => }/schema/nations.json | 2 +- .../objects => }/schema/pagans.json | 2 +- .../objects => }/schema/towns.json | 0 nationchains/schema/tribes.json | 45 + nationchains/schema/www.json | 45 + .../socialworld/contracts/nation_base.js | 36 - .../socialworld/contracts/toolsbox.js | 604 ------------ .../socialworld/contracts/town_base.js | 36 - .../searchindex/nations_nationId_all.json | 6 - .../objects/schema/accessright.json | 0 nationchains/socialworld/setup/townSetup.json | 11 - nationchains/socialworld/setup/townconf.json | 13 - .../{socialworld/objects => }/towns/hill.json | 0 nationchains/towns/index/config.json | 4 + .../index}/towns_nationId_townId.json | 0 .../index}/towns_townId_all.json | 0 .../{socialworld/objects => }/towns/wall.json | 0 .../apidoc/assets/android-chrome-192x192.png | Bin 0 -> 7672 bytes .../apidoc/assets/android-chrome-512x512.png | Bin 0 -> 28928 bytes .../cdn/apidoc/assets/apple-touch-icon.png | Bin 0 -> 8775 bytes .../www/cdn/apidoc/assets/bootstrap.min.css | 6 + .../cdn/apidoc/assets/bootstrap.min.css.map | 1 + .../www/cdn/apidoc/assets/favicon-16x16.png | Bin 0 -> 566 bytes .../www/cdn/apidoc/assets/favicon-32x32.png | Bin 0 -> 1154 bytes .../www/cdn/apidoc/assets/favicon.ico | Bin 0 -> 24838 bytes .../assets/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../assets/glyphicons-halflings-regular.svg | 288 ++++++ .../assets/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../assets/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../assets/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../www/cdn/apidoc/assets/main.bundle.js | 98 ++ nationchains/www/cdn/apidoc/assets/main.css | 521 ++++++++++ nationchains/www/cdn/apidoc/assets/prism.css | 122 +++ nationchains/www/cdn/apidoc/index.html | 933 ++++++++++++++++++ nationchains/www/index/config.json | 4 + nationchains/www/setup/index.html | 88 ++ .../setup}/nginx/modelwebsite.conf.mustache | 16 +- .../www/setup}/nginx/nginx.conf.mustache | 8 +- nationchains/www/setup/townconf.json | 24 + .../{socialworld => www}/setup/tribeconf.json | 0 .../{ => www/socialworld}/apxtrib.html | 0 .../{ => www/socialworld}/enmaintenance.html | 0 .../{ => www/socialworld}/nation_base.html | 0 nationchains/www/socialworld/setup.html | 31 + .../socialworld}/static/error/404.html | 0 .../socialworld}/static/error/50x.html.html | 0 .../static}/fonts/Cantarell-Bold.ttf | Bin .../static}/fonts/Cantarell-BoldItalic.ttf | Bin .../static}/fonts/Cantarell-Italic.ttf | Bin .../static}/fonts/Cantarell-Regular.ttf | Bin .../www/socialworld/static}/fonts/OFL.txt | 0 .../static}/fonts/cantarell-bold-demo.html | 0 .../static}/fonts/cantarell-bold-webfont.woff | Bin .../fonts/cantarell-bold-webfont.woff2 | Bin .../fonts/cantarell-bolditalic-demo.html | 0 .../fonts/cantarell-bolditalic-webfont.woff | Bin .../fonts/cantarell-bolditalic-webfont.woff2 | Bin .../static}/fonts/cantarell-italic-demo.html | 0 .../fonts/cantarell-italic-webfont.woff | Bin .../fonts/cantarell-italic-webfont.woff2 | Bin .../static}/fonts/cantarell-regular-demo.html | 0 .../fonts/cantarell-regular-webfont.woff | Bin .../fonts/cantarell-regular-webfont.woff2 | Bin .../static}/fonts/generator_config.txt | 0 .../specimen_files/grid_12-825-55-15.css | 0 .../specimen_files/specimen_stylesheet.css | 0 .../socialworld/static}/fonts/stylesheet.css | 0 .../static}/img/avataranonymous.png | Bin .../static}/img/avataranonymous1.png | Bin .../static}/img/avataranonymous2.png | Bin .../img}/chartegraphique/codecouleur.png | Bin .../static/img}/chartegraphique/favicon.png | Bin .../img/chartegraphique/logo_bgplein.png | Bin .../chartegraphique/logo_bgtransparent.png | Bin .../img/chartegraphique/logocarre_bgplein.png | Bin .../logocarre_vertical_bgplein.png | Bin .../img/chartegraphique/planchelogo.svg | 0 .../www/socialworld/static/img}/imgtg.png | Bin .../static/img/nations/ants/antsNation.svg | 0 .../static/img/site-en-maintenance.png | Bin .../www/socialworld}/testnetwork.html | 0 .../{ => www/socialworld}/town_base.html | 0 package.json | 12 +- routes/odmdb.js | 19 - 333 files changed, 3764 insertions(+), 1254 deletions(-) create mode 100755 app/middlewares/checkHeaders.js rename {middlewares => app/middlewares}/hasAccessrighton.js (90%) rename {middlewares => app/middlewares}/isAuthenticated.js (97%) create mode 100644 app/middlewares/lg/headers_en.json rename nationchains/socialworld/contracts/checkdata.js => app/models/Checkjson.js (62%) rename {models => app/models}/Contracts.js (100%) rename {models => app/models}/Messages.js (98%) rename models/Nationchains.js => app/models/Nations.js (64%) create mode 100644 app/models/Odmdb.js rename {models => app/models}/Outputs.js (99%) rename {models => app/models}/OutputsDev.js (99%) rename {models => app/models}/Pagans.js (97%) rename {models => app/models}/Referentials.js (100%) rename {models => app/models}/Referentialssave.js (100%) rename {models => app/models}/Setup.js (84%) rename {models => app/models}/Tags.js (100%) create mode 100755 app/models/Toolsbox.js create mode 100644 app/models/Towns.js rename {models => app/models}/Tribes.js (99%) rename {models => app/models}/UploadFiles.js (100%) rename nationchains/socialworld/contracts/lg/checkdata_en.json => app/models/lg/Checkjson_en.json (88%) create mode 100644 app/models/lg/Odmdb_en.json rename nationchains/socialworld/contracts/unittest/checkdata.js => app/models/unittest/Checkjson.js (87%) create mode 100644 app/models/unittest/Odmdb.js rename {routes => app/routes}/messages.js (92%) rename {routes => app/routes}/nationchains.js (100%) create mode 100644 app/routes/odmdb.js rename {routes => app/routes}/outputs.js (100%) rename {routes => app/routes}/pagans.js (100%) rename {routes => app/routes}/referentials.js (100%) rename {routes => app/routes}/tags.js (100%) rename {routes => app/routes}/tribes.js (100%) rename {routes => app/routes}/uploadFiles.js (100%) rename {setup => asupsetup}/ASUPconfig.jsold (100%) rename {setup => asupsetup}/apixtribe.crabdance.com.mustache (100%) rename {setup => asupsetup}/config.mustache (100%) rename {setup => asupsetup}/configsetup.json (100%) rename {setup => asupsetup}/data/domain/apixpress/blockchains/blocks/0.json (100%) rename {setup => asupsetup}/data/domain/apixpress/blockchains/nodes/apixpress.ndda.fr (100%) rename {setup => asupsetup}/data/domain/apixpress/clientconf.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/OrdersAction.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/OutputsAction.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/UploadFilesAction.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/UsersAction.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/gender.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/missionpos.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/profile.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/data/role.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/json/catalogueCompanies.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/json/importcsvCompanies.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/json/menuAdmin.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/json/menuUser.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/json/referentialsetting.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/json/testref.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/json/usersetting.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/action.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/basic.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/basicnolang.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/cards.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/chgpsw.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/companies.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/item.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/userOperator.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagement/object/users.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/dataManagementBackup/object/users.json (100%) rename {setup => asupsetup}/data/domain/apixpress/referentials/fr/object/users.json (100%) rename {setup => asupsetup}/data/domain/apixpress/users/searchindex/emails.json (100%) rename {setup => asupsetup}/data/domain/apixpress/users/searchindex/logins.json (100%) rename {setup => asupsetup}/data/domain/apixpress/users/searchindex/uids.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/app_index_fr.html (96%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/css/app/styles.css (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/css/fullscreen/styles.css (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/css/simplebar.min.css (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/fullscreen_auth_fr.html (98%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/auth.js (98%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/axios.min.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/bootstrap.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/checkdata.js (68%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/feather.min.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/main.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/mustache.min.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/notification.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/simplebar.min.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/js/state.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/manifest.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/scss/main.scss (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpress.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressactivity.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressclientId.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpresssysinfo.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/sidebaradminapixpress_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPPdata_sidebarAdminapixpress_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPappmesa.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/appcontent.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/appmesa.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/appsidebarmenu.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmenu.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmessage.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarnotification.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_appmesa_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebarAdminspace_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebar_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_topbar_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/message.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/reporting.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/search.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/tuto.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appmesa/userManager.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appusers/useractivity.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingaccounttpl.mustache (93%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingdeletetpl.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingpasswordtpl.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingprivacytpl.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/flipbox.zip (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/flipbox/data_flipbox_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.scss (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/fullpage/fullpage.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/notification/data_notiflist_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/notification/notification.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/notification/notiflist.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserLogout_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruseractivity_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserprofile_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/useractivity.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/userprofile.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingaccount.mustache (93%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingdeletetpl.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingpasswordtpl.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingprivacytpl.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/verticaltab/data_verticaltab_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/components/verticaltab/verticaltab.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/appmesa_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/appsimplehead_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/auth_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/fullpage.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/fullscreensimplehead_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/notiflist_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminapixpress_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminspace_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/sidebar_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/topbarUserprofile_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/data/topbar_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/demo.html (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.eot (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.svg (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.ttf (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff2 (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.css (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.min.css (100%) rename {nationchains => asupsetup/data/domain/apixpress/www/app/webapp}/static/img/avataranonymous.png (100%) rename {nationchains => asupsetup/data/domain/apixpress/www/app/webapp}/static/img/avataranonymous1.png (100%) rename {nationchains => asupsetup/data/domain/apixpress/www/app/webapp}/static/img/avataranonymous2.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/img/icons/iconX74x74.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/img/logo/apixpress.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/img/logo/ndda.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/img/logo_footer.svg (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/img/logo_menu.svg (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/lastchange/app_index_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/webapp/static/lastchange/fullscreen_auth_fr.json (100%) rename {setup => asupsetup}/data/domain/apixpress/www/app/www.apixpress.org/apixpress.png (100%) rename {nationchains/static/img => asupsetup/data/domain/apixpress/www/cdn}/chartegraphique/codecouleur.png (100%) rename {nationchains/static/img => asupsetup/data/domain/apixpress/www/cdn}/chartegraphique/favicon.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/chartegraphique/logo_bgplein.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/chartegraphique/logo_bgtransparent.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/chartegraphique/logocarre_bgplein.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/chartegraphique/planchelogo.svg (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/doc/.apiXpress.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/doc/apiXpress.mm (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/Cantarell-Bold.ttf (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/Cantarell-BoldItalic.ttf (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/Cantarell-Italic.ttf (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/Cantarell-Regular.ttf (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/OFL.txt (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-bold-demo.html (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-bold-webfont.woff (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-bold-webfont.woff2 (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-bolditalic-demo.html (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-bolditalic-webfont.woff (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-bolditalic-webfont.woff2 (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-italic-demo.html (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-italic-webfont.woff (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-italic-webfont.woff2 (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-regular-demo.html (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-regular-webfont.woff (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/cantarell-regular-webfont.woff2 (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/generator_config.txt (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/specimen_files/grid_12-825-55-15.css (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/specimen_files/specimen_stylesheet.css (100%) rename {nationchains/static => asupsetup/data/domain/apixpress/www/cdn}/fonts/stylesheet.css (100%) rename {setup/data/domain/apixpress/www/app/webapp/static => asupsetup/data/domain/apixpress/www/cdn}/img/avataranonymous.png (100%) rename {setup/data/domain/apixpress/www/app/webapp/static => asupsetup/data/domain/apixpress/www/cdn}/img/avataranonymous1.png (100%) rename {setup/data/domain/apixpress/www/app/webapp/static => asupsetup/data/domain/apixpress/www/cdn}/img/avataranonymous2.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/img/icons/iconX74x74.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/img/logo/apixpress.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/img/logo/ndda.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/img/logo_footer.svg (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/img/logo_menu.svg (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/1BxJM6AnOfFcwl_vSXkN9Fu2YH4RBIMRJakt-OhuA0k (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/I-uQGmAgy6bWggASoIYoo2_O9BO-Pu6vrQpSIHJY7Ow (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/JdBJU5yetxUAhmxmzyKCdjhAkGAaL_oKY4ME_mxBN6I (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/SiSMi5lKG4u4wTljv3Ryr4rEKwNQyK--ExV3hZT5jgs (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/test.html (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/vRy8dNfRqdZ1kBLpdO6URuCQyF7If1_MFxLoWXzuOX0 (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/basketunknown.png (100%) rename {nationchains/static/img => asupsetup/data/domain/apixpress/www/cdn/public}/imgtg.png (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/index.html (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/article.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/auth.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/axios.min.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/checkdata.js (69%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/editor.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/editorsave.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/formsave.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/formvieux.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/jquery-3.6.0.js (99%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/main.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/mustache.min.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/plugins.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/questio.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/tagASUPVOIRstate.js.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/js/tagold.js (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/template/formgeneric.mustache (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/public/template/questInput.mustache (100%) rename {nationchains => asupsetup/data/domain/apixpress/www/cdn/public}/testnetwork.html (100%) rename {setup => asupsetup}/data/domain/apixpress/www/cdn/suiviprojetapiXpress.svg (100%) delete mode 100755 middlewares/checkHeaders.js delete mode 100644 models/Odmdb.js delete mode 100644 models/lg/odmdb_en.json create mode 100644 nationchains/deals/index/config.json create mode 100644 nationchains/deals/myblocks.json rename nationchains/{socialworld/objects => }/nations/ants.json (100%) create mode 100644 nationchains/nations/index/config.json create mode 100644 nationchains/nations/index/nations_nationId_all.json create mode 100644 nationchains/pagans/index/config.json create mode 100644 nationchains/schema/accessright.json create mode 100644 nationchains/schema/index/config.json rename nationchains/{socialworld/objects => }/schema/lg/nations_en.json (100%) rename nationchains/{socialworld/objects => }/schema/lg/nations_fr.json (100%) rename nationchains/{socialworld/objects => }/schema/lg/pagans_en.json (100%) rename nationchains/{socialworld/objects => }/schema/lg/pagans_fr.json (100%) rename nationchains/{socialworld/objects => }/schema/lg/towns_en.json (100%) rename nationchains/{socialworld/objects => }/schema/lg/towns_fr.json (100%) rename nationchains/{socialworld/objects => }/schema/nations.json (95%) rename nationchains/{socialworld/objects => }/schema/pagans.json (98%) rename nationchains/{socialworld/objects => }/schema/towns.json (100%) create mode 100644 nationchains/schema/tribes.json create mode 100644 nationchains/schema/www.json delete mode 100644 nationchains/socialworld/contracts/nation_base.js delete mode 100755 nationchains/socialworld/contracts/toolsbox.js delete mode 100644 nationchains/socialworld/contracts/town_base.js delete mode 100644 nationchains/socialworld/objects/nations/searchindex/nations_nationId_all.json delete mode 100644 nationchains/socialworld/objects/schema/accessright.json delete mode 100755 nationchains/socialworld/setup/townSetup.json delete mode 100644 nationchains/socialworld/setup/townconf.json rename nationchains/{socialworld/objects => }/towns/hill.json (100%) create mode 100644 nationchains/towns/index/config.json rename nationchains/{socialworld/objects/towns/searchindex => towns/index}/towns_nationId_townId.json (100%) rename nationchains/{socialworld/objects/towns/searchindex => towns/index}/towns_townId_all.json (100%) rename nationchains/{socialworld/objects => }/towns/wall.json (100%) create mode 100644 nationchains/www/cdn/apidoc/assets/android-chrome-192x192.png create mode 100644 nationchains/www/cdn/apidoc/assets/android-chrome-512x512.png create mode 100644 nationchains/www/cdn/apidoc/assets/apple-touch-icon.png create mode 100644 nationchains/www/cdn/apidoc/assets/bootstrap.min.css create mode 100644 nationchains/www/cdn/apidoc/assets/bootstrap.min.css.map create mode 100644 nationchains/www/cdn/apidoc/assets/favicon-16x16.png create mode 100644 nationchains/www/cdn/apidoc/assets/favicon-32x32.png create mode 100644 nationchains/www/cdn/apidoc/assets/favicon.ico create mode 100644 nationchains/www/cdn/apidoc/assets/glyphicons-halflings-regular.eot create mode 100644 nationchains/www/cdn/apidoc/assets/glyphicons-halflings-regular.svg create mode 100644 nationchains/www/cdn/apidoc/assets/glyphicons-halflings-regular.ttf create mode 100644 nationchains/www/cdn/apidoc/assets/glyphicons-halflings-regular.woff create mode 100644 nationchains/www/cdn/apidoc/assets/glyphicons-halflings-regular.woff2 create mode 100644 nationchains/www/cdn/apidoc/assets/main.bundle.js create mode 100644 nationchains/www/cdn/apidoc/assets/main.css create mode 100644 nationchains/www/cdn/apidoc/assets/prism.css create mode 100644 nationchains/www/cdn/apidoc/index.html create mode 100644 nationchains/www/index/config.json create mode 100644 nationchains/www/setup/index.html rename {setup => nationchains/www/setup}/nginx/modelwebsite.conf.mustache (75%) rename {setup => nationchains/www/setup}/nginx/nginx.conf.mustache (90%) create mode 100644 nationchains/www/setup/townconf.json rename nationchains/{socialworld => www}/setup/tribeconf.json (100%) rename nationchains/{ => www/socialworld}/apxtrib.html (100%) rename nationchains/{ => www/socialworld}/enmaintenance.html (100%) rename nationchains/{ => www/socialworld}/nation_base.html (100%) create mode 100644 nationchains/www/socialworld/setup.html rename nationchains/{ => www/socialworld}/static/error/404.html (100%) rename nationchains/{ => www/socialworld}/static/error/50x.html.html (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/Cantarell-Bold.ttf (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/Cantarell-BoldItalic.ttf (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/Cantarell-Italic.ttf (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/Cantarell-Regular.ttf (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/OFL.txt (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-bold-demo.html (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-bold-webfont.woff (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-bold-webfont.woff2 (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-bolditalic-demo.html (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-bolditalic-webfont.woff (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-bolditalic-webfont.woff2 (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-italic-demo.html (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-italic-webfont.woff (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-italic-webfont.woff2 (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-regular-demo.html (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-regular-webfont.woff (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/cantarell-regular-webfont.woff2 (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/generator_config.txt (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/specimen_files/grid_12-825-55-15.css (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/specimen_files/specimen_stylesheet.css (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/fonts/stylesheet.css (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/img/avataranonymous.png (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/img/avataranonymous1.png (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static}/img/avataranonymous2.png (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static/img}/chartegraphique/codecouleur.png (100%) rename {setup/data/domain/apixpress/www/cdn => nationchains/www/socialworld/static/img}/chartegraphique/favicon.png (100%) rename nationchains/{ => www/socialworld}/static/img/chartegraphique/logo_bgplein.png (100%) rename nationchains/{ => www/socialworld}/static/img/chartegraphique/logo_bgtransparent.png (100%) rename nationchains/{ => www/socialworld}/static/img/chartegraphique/logocarre_bgplein.png (100%) rename nationchains/{ => www/socialworld}/static/img/chartegraphique/logocarre_vertical_bgplein.png (100%) rename nationchains/{ => www/socialworld}/static/img/chartegraphique/planchelogo.svg (100%) rename {setup/data/domain/apixpress/www/cdn/public => nationchains/www/socialworld/static/img}/imgtg.png (100%) rename nationchains/{ => www/socialworld}/static/img/nations/ants/antsNation.svg (100%) rename nationchains/{ => www/socialworld}/static/img/site-en-maintenance.png (100%) rename {setup/data/domain/apixpress/www/cdn/public => nationchains/www/socialworld}/testnetwork.html (100%) rename nationchains/{ => www/socialworld}/town_base.html (100%) delete mode 100644 routes/odmdb.js diff --git a/.gitignore b/.gitignore index 97c62a2..e015f5d 100755 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ /node_modules /tmp -/tribes -/tribesbackup /nationchains/blocks +/nationchains/tribes /yarn* \ No newline at end of file diff --git a/app/middlewares/checkHeaders.js b/app/middlewares/checkHeaders.js new file mode 100755 index 0000000..2ba09ba --- /dev/null +++ b/app/middlewares/checkHeaders.js @@ -0,0 +1,89 @@ +const path = require( 'path' ); +const config = require( '../tribes/townconf.js' ); + +const checkHeaders = ( req, res, next ) => { + /** + * @apiDefine apxHeader + * @apiGroup Middleware + * @apiDescription Header is mandatory to access apxtrib see tribes/townconf.json.exposedHeaders + * A turn around can be done with a simple get params has to be sent in the get url. Usefull to send simple get without header like ?xworkon=tribeName&xlang=en... priority is given to headers + * For performance, tokens are store globaly in req.app.locals.tokens={xpaganid:xauth} + * if xlang is not in config.languagesAvailable + * + * @apiHeader {string} xauth Pagans unique jwt token store in local town Pagans data or "noauth" + * @apiHeader {string} xpaganid Pagans unique Pagan id in uuid format or "nouuid" + * @apiHeader {string} xlang the 2 letter langage it request the api (if not exist the 2 first letter of Accept-Language header ) if lang does not exist in the town then en is set (as it always exist in en). + * @apiHeader {string} xtribe Tribes id where Pagan belong to + * @apiHeader {string} xworkon Tribes on which pagansId want and have accessright to work on. + * @apiHeader {string} xapp Name of app that send the request (tribesId:websiteName) cpaganid have to have accessright on this app} + * + * @apiError missingexposedHeaders it miss an exposedHeaders + * + * @apiErrorExample {json} Error-Response: + * HTTP/1/1 404 Not Found + * { + * status:404, + * info:"|middleware|missingheaders", + * moreinfo: xpaganid xauth + * } + * + * @apiHeaderExample {json} Header-Exemple: + * { + * xtribe:"apache", + * xpaganid:"12123211222", + * xworkon:"sioux", + * xauth:"", + * xlang:"en", + * xapp:"" + * } + */ + req.session = {}; + const header = {}; + if (!req.header('xlang') && req.header('Content-Language')) req.params.xlang=req.header('Content-Language'); + let missingheader = []; + for( const h of config.exposedHeaders ) { + //console.log( h, req.header( h ) ) + if( req.params[ h ] ) { + header[ h ] = req.params[ h ] + } else if( req.header( h ) ) { + header[ h ] = req.header( h ) + } else { + missingheade.push(h); + } + }; + //console.log( 'header', header ) + // store in session the header information + req.session.header = header; + // Each header have to be declared + if( missingheader != "" ) { + // bad request + return res.status( 400 ) + .json( { + ref:"headers" + info: "missingheader", + moreinfo: missingheader + } ); + }; + //console.log( req.app.locals.tribeids ) + if( !req.app.locals.tribeids.includes( header.xtribe ) ) { + return res.status( 400 ) + .json( { + ref:"headers" + info: 'tribeiddoesnotexist', + moreinfo: header.xtribe + } ); + } + if( !req.app.locals.tribeids.includes( header.xworkon ) ) { + return res.status( 400 ) + .send( { + info: [ 'workondoesnotexist' ], + ref: 'headers', + moreinfo:header.xworkon + } ); + } + if( !config.languages.includes( header.xlang ) ) { + header.xlang="en"; + } + next(); +}; +module.exports = checkHeaders; diff --git a/middlewares/hasAccessrighton.js b/app/middlewares/hasAccessrighton.js similarity index 90% rename from middlewares/hasAccessrighton.js rename to app/middlewares/hasAccessrighton.js index 2d1290e..553be78 100755 --- a/middlewares/hasAccessrighton.js +++ b/app/middlewares/hasAccessrighton.js @@ -30,10 +30,10 @@ const hasAccessrighton = ( object, action, ownby ) => { //console.log( 'Access data autorise? ', req.right ) if( !req.right ) { return res.status( 403 ) - .send( { - info: [ 'forbiddenAccess' ], - model: 'middleware', - moreinfo: 'no auth to act on this object' + .json( { + info:'forbiddenAccessright', + ref: 'headers', + moreinfo: {xpaganid:req.session.header.xpaganid,object:object, xworkon:req.session.header.xworkon, action:action} } ) } next(); diff --git a/middlewares/isAuthenticated.js b/app/middlewares/isAuthenticated.js similarity index 97% rename from middlewares/isAuthenticated.js rename to app/middlewares/isAuthenticated.js index 73d6c0d..c9a26f6 100755 --- a/middlewares/isAuthenticated.js +++ b/app/middlewares/isAuthenticated.js @@ -8,6 +8,7 @@ const glob = require( 'glob' ); //const src = '..'; // ( __dirname.indexOf( '/node_modules/' ) > -1 ) ? '../../..' : '..'; //const config = require( path.normalize( `${__dirname}/${src}/config.js` ) ); const config = require( '../tribes/townconf.js' ); + const isAuthenticated = ( req, res, next ) => { /* check if authenticated with valid token @@ -17,7 +18,8 @@ const isAuthenticated = ( req, res, next ) => { app:{'tribeid:website':[liste of menu]}, data:{ "sitewebsrc": "RWCDO", "contacts": "RWCDO"}} - Liste of menu is linked with the app tht have to be consistent with accessrights.data + Liste of menu is linked with the app tht h + ave to be consistent with accessrights.data data, list of object accessright Read Write Create Delete Owner a xuuid can read any objet if R if O wner means that it can only read write its object create by himself @@ -54,7 +56,7 @@ const isAuthenticated = ( req, res, next ) => { if( req.session.header.xauth == "1" ) { //return res.status( 403 ) return res.status( 403 ) - .send( { + .json( { info: [ 'forbiddenAccess' ], model: 'Pagans', moreinfo: 'isAuthenticated faill' diff --git a/app/middlewares/lg/headers_en.json b/app/middlewares/lg/headers_en.json new file mode 100644 index 0000000..f1df6c0 --- /dev/null +++ b/app/middlewares/lg/headers_en.json @@ -0,0 +1,6 @@ +{ + "missingheader":"This header miss to have a valid request: {{#moreinfo}} {{.}} {{/moreinfo}}", + "tribeiddoesnotexist":"Header xtribe: {{moreinfo}} does not exist", + "workondoesnotexist":"Header xworkon: {{moreinfo}} does not exist", + "forbiddenAccessright":"Pagan {{moreinfo.xpaganid}} has not access right to act {{moreinfo.action}} onto object {{moreinfo.object}} for tribe {{moreinfo.xworkon}}" +} \ No newline at end of file diff --git a/nationchains/socialworld/contracts/checkdata.js b/app/models/Checkjson.js similarity index 62% rename from nationchains/socialworld/contracts/checkdata.js rename to app/models/Checkjson.js index 773435c..1992170 100755 --- a/nationchains/socialworld/contracts/checkdata.js +++ b/app/models/Checkjson.js @@ -1,34 +1,33 @@ /* -This module have to be independant of any external package -it is shared between back and front and is usefull -to apply common check in front before sending it in back +This module have to be use in back as well front can be include in project with - - into a browser : - - into a node.js : const check = require( `../nationchains/socialworld/contracts/check.js`); + - into a browser : + - into a node.js : const Checkjson = require( `../nationchains/socialworld/contracts/Checkjson.js`); */ // --## -const check = {}; -check.schema = {}; -check.schema.properties = {}; -check.schema.properties.type = {}; -check.schema.properties.type.string = (str) => typeof str === "string"; -check.schema.properties.type.number = (n) => typeof n === "number"; -check.schema.properties.type.integer = (n) => +const Checkjson = {}; +Checkjson.schema = {}; +Checkjson.schema.properties = {}; +Checkjson.schema.properties.type = {}; +Checkjson.schema.properties.type.string = (str) => typeof str === "string"; +Checkjson.schema.properties.type.number = (n) => typeof n === "number"; +Checkjson.schema.properties.type.boolean = (n) => typeof n === "boolean"; +Checkjson.schema.properties.type.integer = (n) => n != "" && !isNaN(n) && Math.round(n) == n; -check.schema.properties.type.float = (n) => +Checkjson.schema.properties.type.float = (n) => n != "" && !isNaN(n) && Math.round(n) != n; //not yet in json schema -check.schema.properties.minLength = (str, min) => +Checkjson.schema.properties.minLength = (str, min) => typeof str === "string" && str.length > parseInt(min); -check.schema.properties.maxLength = (str, max) => +Checkjson.schema.properties.maxLength = (str, max) => typeof str === "string" && str.length < parseInt(max); -check.schema.properties.multipleOf = (n, val) => +Checkjson.schema.properties.multipleOf = (n, val) => typeof n === "number" && typeof val === "number" && parseFloat(n) / parseFloat(val) - Math.round(parseFloat(n) / parseFloat(val)) < 0.0000001; -check.schema.properties.range = ( +Checkjson.schema.properties.range = ( n, minimum, exclusiveMinimum, @@ -45,7 +44,7 @@ check.schema.properties.range = ( return false; return true; }; -check.schema.properties.pattern = (str, pattern) => { +Checkjson.schema.properties.pattern = (str, pattern) => { try { new RegExp(pattern); } catch (e) { @@ -53,11 +52,12 @@ check.schema.properties.pattern = (str, pattern) => { } return pattern.test(str); }; -check.schema.properties.enum = (str, enumvalues) => +Checkjson.schema.properties.enum = (str, enumvalues) => typeof str === "string" && enumvalues.includes(str); // see format https://json-schema.org/understanding-json-schema/reference/string.html#format -check.schema.properties.format = { +Checkjson.schema.properties.format = { "date-time": / /, + stringalphaonly:/^[A-Za-z0-9]{3,}$/, time: / /, date: / /, duration: / /, @@ -78,8 +78,8 @@ check.schema.properties.format = { /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.{}:|\s]{8,}/, postalcodefr: /(^\d{5}$)|(^\d{5}-\d{4}$)/, }; - -check.schema.validation = (schema) => { +Checkjson.schema.properties.default +Checkjson.schema.validation = (schema) => { /*validate a schema structure*/ const res = { status: 200, err: [] }; if (schema.properties) { @@ -88,10 +88,10 @@ check.schema.validation = (schema) => { if ( properties[p].type && typeof properties[p].type === "string" && - !check.schema.properties.type[properties[p].type] + !Checkjson.schema.properties.type[properties[p].type] ) { res.err.push({ - info: "|checkdata|typedoesnotexistinschema", + info: "|Checkjson|typedoesnotexistinschema", moreinfo: ` ${properties[p].type}`, }); } @@ -101,25 +101,25 @@ check.schema.validation = (schema) => { Array.isArray(properties[p].type) ) { properties[p].type.forEach((tp) => { - if (!check.schema.properties.type[tp]) + if (!Checkjson.schema.properties.type[tp]) res.err.push({ - info: "|checkdata|typedoesnotexistinschema", + info: "|Checkjson|typedoesnotexistinschema", moreinfo: `${tp} of ${properties[p].type}`, }); }); } if ( properties[p].format && - !check.schema.properties.format[properties[p].format] + !Checkjson.schema.properties.format[properties[p].format] ) { res.err.push({ - info: "|checkdata|formatdoesnotexistinschema", + info: "|Checkjson|formatdoesnotexistinschema", moreinfo: ` ${properties[p].format}`, }); } if (properties[p].enum && !Array.isArray(properties[p].enum)) { res.err.push({ - info: "|checkdata|enumisnotarrayinschema", + info: "|Checkjson|enumisnotarrayinschema", moreinfo: ` ${properties[p].enum}`, }); } @@ -130,7 +130,7 @@ check.schema.validation = (schema) => { return res; }; -check.schema.data = (schema, ctx, data) => { +Checkjson.schema.data = (schema, data, withschemacheck) => { /* validate a data set with a schema in a context ctx */ /* console.log('#################') @@ -138,8 +138,10 @@ check.schema.data = (schema, ctx, data) => { console.log('---------') console.log(data) */ - const validschema = check.schema.validation(schema); - if (validschema.status != 200) return validschema; + if (withschemacheck) { + const validschema = Checkjson.schema.validation(schema); + if (validschema.status != 200) return validschema; + } const res = { status: 200, err: [] }; if (schema.properties) { const properties = schema.properties; @@ -153,38 +155,38 @@ check.schema.data = (schema, ctx, data) => { let valid = false; typlist.forEach((typ) => { // at least one test have to be ok - if (check.schema.properties.type[typ](data[p])) valid = true; + if (Checkjson.schema.properties.type[typ](data[p])) valid = true; }); if (!valid) res.err.push({ - info: "|checkdata|dataerrpropertie", + info: "|Checkjson|dataerrpropertie", moreinfo: `${p} : ${data[p]}`, }); if ( properties[p].minLength && - !check.schema.properties.minLength(data[p], properties[p].minLength) + !Checkjson.schema.properties.minLength(data[p], properties[p].minLength) ) { res.err.push({ - info: "|checkdata|dataerrpropertie", + info: "|Checkjson|dataerrpropertie", moreinfo: `${p} : ${data[p]} minLength:${properties[p].minLength}`, }); } if ( properties[p].maxLength && - !check.schema.properties.maxLength(data[p], properties[p].maxLength) + !Checkjson.schema.properties.maxLength(data[p], properties[p].maxLength) ) { res.err.push({ - info: "|checkdata|dataerrpropertie", + info: "|Checkjson|dataerrpropertie", moreinfo: `${p} : ${data[p]} maxLength:${properties[p].maxLength}`, }); } if ( properties[p].multipleOf && - !check.schema.properties.multipleOf(data[p], properties[p].multipleOf) + !Checkjson.schema.properties.multipleOf(data[p], properties[p].multipleOf) ) { res.err.push({ - info: "|checkdata|dataerrpropertie", + info: "|Checkjson|dataerrpropertie", moreinfo: `${p} : ${data[p]} not a multipleOf:${properties[p].multipleOf}`, }); } @@ -196,7 +198,7 @@ check.schema.data = (schema, ctx, data) => { ) { // test range if ( - !check.schema.properties.range( + !Checkjson.schema.properties.range( data[p], properties[p].minimum, properties[p].exclusiveMinimum, @@ -205,36 +207,36 @@ check.schema.data = (schema, ctx, data) => { ) ) { res.err.push({ - info: "|checkdata|dataerrpropertie", + info: "|Checkjson|dataerrpropertie", moreinfo: `${p} : ${data[p]} not in range ${properties[p].minimum} exclu: ${properties[p].exclusiveMinimum} and ${properties[p].maximum} exclu: ${properties[p].exclusiveMaximum}`, }); } } if ( properties[p].enum && - !check.schema.properties.enum(data[p], properties[p].enum) + !Checkjson.schema.properties.enum(data[p], properties[p].enum) ) { res.err.push({ - info: "|checkdata|dataerrpropertie", + info: "|Checkjson|dataerrpropertie", moreinfo: `${p} : ${data[p]} not in enum list :${properties[p].enum}`, }); } if (properties[p].format) { properties[p].pattern = - check.schema.properties.format[properties[p].format]; + Checkjson.schema.properties.format[properties[p].format]; } if ( properties[p].pattern && - !check.schema.properties.pattern(data[p], properties[p].pattern) + !Checkjson.schema.properties.pattern(data[p], properties[p].pattern) ) { res.err.push({ - info: "|checkdata|dataerrpropertie", + info: "|Checkjson|dataerrpropertie", moreinfo: `${p} : ${data[p]} problem pattern or format ${properties[p].pattern}`, }); } - } else if (schema.required.includes(p)) { + } else if (schema.required && schema.required.includes(p)) { res.err.push({ - info: "|checkdata|dataerrpropertiesrequired", + info: "|Checkjson|dataerrpropertiesrequired", moreinfo: `${p}`, }); } @@ -243,59 +245,4 @@ check.schema.data = (schema, ctx, data) => { if (res.err.length > 0) res.status = 417; return res; }; - -/* -Normalize data link to check.schema.properties.format -or any normalization to get consistent data -*/ -const normalize={}; -normalize.telephonefr =(phone)=>{ - phone = phone.trim().replace(/[- .]/g, ""); - if ( - check.schema.properties.format.telephoenfr(phone) && - phone.length == 10 && - phone[0] == "0" - ) { - phone = "+33 " + phone.substring(1); - } - return phone; -}; -normalize.zfill10 = (num) => { - let s = num + ""; - while (s.length < 10) s = "0" + s; - return s; -}; - - -check.test.unique = (ctx, val) => { - if (ctx.list[ctx.currentfield]) { - return !ctx.list[ctx.currentfield].includes(val); - } else { - console.log("ERR no list for field:" + ctx.currentfield); - return false; - } -}; - -// check.normalize take a correct data then reformat it to harmonise it -check.normalize = {}; -check.normalize.phoneNumber = (ctx, phone) => { - phone = phone.trim().replace(/[- .]/g, ""); - if ( - check.test.phoneNumber("", phone) && - phone.length == 10 && - phone[0] == "0" - ) { - phone = "+33 " + phone.substring(1); - } - return phone; -}; -check.normalize.upperCase = (ctx, txt) => txt.toUpperCase(); -check.normalize.lowerCase = (ctx, txt) => txt.toLowerCase(); -// fixe 10 position et complete par des 0 devant -check.normalize.zfill10 = (ctx, num) => { - let s = num + ""; - while (s.length < 10) s = "0" + s; - return s; -}; - -if (typeof module !== "undefined") module.exports = check; +if (typeof module !== "undefined") module.exports = Checkjson; diff --git a/models/Contracts.js b/app/models/Contracts.js similarity index 100% rename from models/Contracts.js rename to app/models/Contracts.js diff --git a/models/Messages.js b/app/models/Messages.js similarity index 98% rename from models/Messages.js rename to app/models/Messages.js index bd456a7..dbbfe39 100755 --- a/models/Messages.js +++ b/app/models/Messages.js @@ -9,7 +9,7 @@ const { DateTime } = require( 'luxon' ); const UUID = require( 'uuid' ); const Outputs = require( '../models/Outputs.js' ); const config = require( '../tribes/townconf.js' ); -const checkdata = require( `../nationchains/socialworld/contracts/checkdata.js`); +const Checkjson = require( `./Checkjson.js`); /* Message manager * Manage apxtrib message at different level @@ -220,9 +220,9 @@ Messages.object = ( data, header ) => { if( data.callback ) { // check from plugin data and add relevant data const Plug = require( `${config.tribes}/${data.callback.tribeid}/plugins/${data.callback.plugins}/Model.js` ); - const check = Plug[ data.callback.function ]( header.xworkon, data ); - if( check.status == 200 ) { - data = check.data.data; + const Checkjson = Plug[ data.callback.function ]( header.xworkon, data ); + if( Checkjson.status == 200 ) { + data = Checkjson.data.data; } else { return check; } diff --git a/models/Nationchains.js b/app/models/Nations.js similarity index 64% rename from models/Nationchains.js rename to app/models/Nations.js index a1bfc54..04a0e89 100755 --- a/models/Nationchains.js +++ b/app/models/Nations.js @@ -3,9 +3,12 @@ const fs = require("fs-extra"); const glob = require("glob"); const jwt = require("jwt-simple"); const axios = require("axios"); -const config = require("../tribes/townconf.js"); -const Odmdb = require('../models/Odmdb.js'); - +const path=require('path'); +//const config = require("../tribes/townconf.js"); +const Odmdb = require('./Odmdb.js'); +// lowercase 1st letter is normal +const towns = require('./Towns.js'); +const pagans = require('./Pagans.js'); /* Blockchain manager * Manage network directory of nations and towns @@ -15,15 +18,76 @@ Blockchain manager * manage APIXP rules 20 M APIXP 1AXESS = 1 block validation * manage contract = action if something appened validate by a proof of work */ -const Nationchains = {}; -Nationchains.init = () => { - console.group("init Nationchains"); +const Nations = {}; +Nations.init = () => { + console.group("init Nations"); }; -Nationchains.synchronize = () => { + +Nations.updateChains = async (newtown) =>{ + /** + * @newtown {object} optional to request a registration in the nationchain network + * if newtown exist then it send a request to update itself else it just refresh from existing town. + * Check public nationchains are up to date from the existing list of towns + * Each object to sync have a /index/config.json with key lastupdate = timestamp last update + * tribes is not synchonized and contain private information + * A town is a network node of the nationchains and allow to synchronize new + */ + const res= {status:400}; + const ref2update={} + glob.sync('nationchains/**/index/config.json').forEach(f=>{ + const ref=fs.readJsonSync(f) + ref2update[path.basename(ref.schema,'.json')]=ref.lastupdate; + }) + console.log(ref2update) + // Get list of town to check n of them have fresh update + const knowntowns =fs.readJsonSync('nationchains/towns/index/towns_townId_all.json'); + let promiselistblock=[] + let towidlist=[] + Object.keys(knowntowns).forEach(townid=>{ + // identify the town with the highest block to update town + promiselistblock.push(axios.get(`${knowntowns[townid].url}/blocks/index/config.json`)); + townidlistblock.push(townid) + }); + let selectedtown="" + let blocnum=0 + await Promise.all(promiselistblock) + .then(rep=>{ + for (let pos=0;pos blocnum) { + selectedtown=townidlist[pos] + blocnum=rep[pos].blocnum + } + } + }) + .catch(err=>{ + console.log(err) + }) + let promiselistref=[] + Object.keys(ref2update).forEach(ob=>{ + promiselistref.push(axios.get(`${knowntowns[selectedtown].url}/${obj}/index/config.json`)); + }) + await Promise.all(promiselistref) + .then(rep=>{ + for (let pos=0;pos local lastupate => recupe _all et regenere tous les objets par ecrasement + } + }) + .catch(err=>{ + console.log(err) + }) + return res +} + +Nation.update=(nationsource)=>{ +/** + * Update object nation with last update + */ +} + +Nations.synchronize = () => { /* - Run process to communicate with a list of apxtrib instance to update transaction and earn AXP - To creation of a new tribeid or a new login - */ + Run process to communicate with a list of towns to update network and transaction + */ //update himself then send to other information if (process.env.NODE_ENV != "prod") { // Not concerned @@ -64,7 +128,7 @@ Nationchains.synchronize = () => { // proof of work // try to find a key based on last block with difficulty // if find then send to all for update and try to get token - // in any case rerun Nationchains.synchronize() + // in any case rerun Nations.synchronize() currentinstance.instanceknown.forEach((u) => { if (u != config.rootURL) { //send currentinstance info and get back state of @@ -119,14 +183,14 @@ Nationchains.synchronize = () => { }); }; -Nationchains.create = (conf) => { +Nations.create = (conf) => { /* @conf from a nationchains/socialworld/setup/townSetup {object, nationName, townName, dns} @return */ const res = {}; - if (conf.object=="town"){ - Odmdb.create("nationchains/socialworld/objects","town",conf); + if (conf.object=="towns"){ + Odmdb.create("nationchains/socialworld/objects","towns",conf); } const nation_town = fs.readJsonSync( "./nationchains/socialworld/objects/towns/searchindex/towns_nationId_townId.json" diff --git a/app/models/Odmdb.js b/app/models/Odmdb.js new file mode 100644 index 0000000..1517225 --- /dev/null +++ b/app/models/Odmdb.js @@ -0,0 +1,262 @@ +const glob = require("glob"); +const path = require("path"); +const fs = require("fs-extra"); +const axios = require('axios'); +//const config = require( '../tribes/townconf.js' ); +const Checkjson = require(`./Checkjson.js`); + +/* This manage Objects for indexing and check and act to CRUD + objectpath/objects/schema/objectName.json + /objectNames/searchindes/objectName_valueofkey_uuildlist.json + /objectNames/uuid.json + +*/ +const Odmdb = {}; +/* +Input: metaobject => data mapper of Key: Value + + objname + an object {} + action Checkjson => get a valid or not answer + objname + an object {} + action search => apply matching algo to find probalistic object id + objname + action index => update /searcindex of objects concern + +*/ +Odmdb.setObject=(schemaPath, objectPath, objectName, schema, lgjson, lg)=>{ + /* + @schemapath {string} path to create or replace a schema ${schemaPath}/schema/ + @objectPath {string} path where object are store + @objectName {string} name of the object + @schema {object} the json schema for this object + @lgjson {object} the json file for a specific language + @lg {string} the 2 letters language + + a shema : + schemaPath/schema/objectName.json + /lg/objectName_{lg}.json + an object : + objectPath/objectName/index/config.json ={"schema":"relativpathfile or http"} + /uniqueid.json defining schema + + */ + if (!fs.existsSync(schemaPath)){ + return {status:404, ref:"Odmdb", info:"pathnamedoesnotexist", moreinfo:{fullpath:schemaPath}} + } + if (!fs.existsSync(objectPath)){ + return {status:404, ref:"Odmdb", info:"pathnamedoesnotexist",moreinfo:{fullpath:objectPath}} + } + // store schema file if not empty undefined or {} + if (schema && !(Object.keys(schema).length === 0 && schema.constructor === Object)){ + fs.outputJSONSync(`${schemaPath}/schema/${objectName}.json`,schema, {spaces:2}) + } + if (lgjson && lg && !(Object.keys(lgjson).length === 0 && lgjson.constructor === Object)){ + fs.outputJSONSync(`${schemaPath}/lg/${objectName}_${lg}.json`,lgjson, {spaces:2}) + } + //create environnement object with the new schema config + if (!fs.existsSync(`${objectPath}/${objectName}`)){ + fs.outputJsonSync(`${objectPath}/${objectName}/index/config.json`,{schema:`${schemaPath}/schema/${objectName}.json`},{spaces:2}) + } + return {status:200} +} + +Odmdb.schema = (schemaPath, objectName, withschemacheck) => { + // Return schema if exist and objectpath contain objectName { status:200;data:schema} + if (!fs.existsSync(`${schemaPath}/${objectName}`)) + return { + status: 404, + info: "|odmdb|schemapathnamedoesnotexist", + moreinfo: `${schemaPath}/${objectName}`, + }; + if (!fs.existsSync(`${objectPath}/schema/${objectName}.json`)) { + return { + status: 404, + info: `|odmdb|schemanotfound`, + moreinfo: `file not found ${schemaPath}/schema/${objectName}.json`, + }; + } + const schema = fs.readJsonSync(`${schemaPath}/schema/${objectName}.json`); + // check schema apx validity specificities primary unique ans searchindex + if (withschemacheck) { + if (!schema.apxprimarykey) { + // code 422: unprocessable Content + return { + status: 422, + info: "|Odmdb|apxprimarykeynotfound", + moreinfo: `${schemaPath}/schema/${objectName}.json`, + }; + } else { + if ( + !( + schema.apxsearchindex[schema.apxprimarykey] && + schema.apxsearchindex[schema.apxprimarykey].list + ) + ) { + return { + status: 422, + info: "|Odmdb|apxprimaryketnotinsearchindexlist", + moreinfo: `${schemaPath}/schema/${objectName}.json`, + }; + } + if (schema.apxuniquekey) { + schema.apxuniquekey.forEach((k) => { + if ( + !( + schema.apxsearchindex[k] && + schema.apxsearchindex[k][schema.apxprimarykey] + ) + ) { + return { + status: 422, + info: "|Odmdb|apxuniquekeynotinsearchindex", + moreinfo: `${schemaPath}/schema/${objectName}.json`, + }; + } + }); + } + } + const validschema = Checkjson.schema.validation(schema); + if (validschema.status != 200) return validschema; + } + return { + status: 200, + data: schema, + }; +}; + +Odmdb.Checkjson = (objectPath, objectName, data, withschemacheck) => { + /* + @objectPath path to the folder that contain /objects/objectName/ /lg/objectName_{lg}.json /schema/objectName.json + @objectName name of object + @data data to check based on schema objectName definition + + @return status:200 Data is consistent with schema and primarykey does not exist + status:201 Data is consistent with schema and primarykey does already exist + status:other means unconsistent schema: + 404: schema does not exist + or unconsitent data and schema from Checkjson.js Checkjson.schema.data + + */ + const res = { status: 200 }; + //get schema link of object + const schemaPath = fs.readJsonSync(`${objectPath}/${objectName}/index/config.json`)['schema'] + if (schemaPath.substring(0,4)=="http"){ + // lance requete http pour recuperer le schema + }else{ + schema=="!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + } + // check schema validity + const schema = Odmdb.schema(objectPath, objectName, withschemacheck); + if (schema.status != 200) return schema; + console.log("SCHEMA for checking:"); + console.log(schema.data); + console.log("DATA to check:"); + console.log(data); + // withschemacheck at false, if check then it is done at Odmdb.schema + const validate = Checkjson.schema.data(schema.data, data, false); + if (validate.status != 200) { + return validate; + } + if ( + schema.data.apxprimarykey && + data[k] && + fs.existsSync(`${objectPath}/${objectName}/${data[k]}.json}`) + ) { + res.status = 201; // means created => exist an object with this primary key + } + if (schema.data.apxuniquekey) { + schema.data.apxuniquekey.forEach((k) => { + if ( + data[k] && + fs.existsSync( + `${objectPath}/${objectName}/searchindex/${objectName}_${k}_${schema.data.apxprimarykey}.json}` + ) && + fs.readJsonSync( + `${objectPath}/${objectName}/searchindex/${objectName}_${k}_${schema.data.apxprimarykey}.json}` + )[k] + ) { + res.status = 201; // means created => exist as primary key + } + }); + } + return res; +}; +Odmdb.search = (objectPath, objectName, search) => { + /* + @search= { + txt: string, + algo: match | pattern | fuzzy + fieldstring:[list of field], + indexfilter:{index1:[val1,val2 | ] } + } + Return data:[uuids] + + example: search exact match hill in townId + heavy search={txt:"hill",algo:"match",fieldstring:"toxnId"} + light search={txt:"hill", algo:"match", indexfilter:{"key":"townId","value":[]}} + light search={txt:"hill", algo:"match", indexfilter:{"key":"nationId","value":"ants"}} + + */ + const schema = Odmdb.schema(objectPath, objectName); + if (schema.status != 200) return schema; +}; +Odmdb.get = (objectPath, objectName, uuidprimarykeyList, fieldList) => { + /* + @uuidprimarykeyList list of uuid requested + @fieldList key to return for each object + Return objectName {status:200; data:{found:[{primarykey,field}],notfound:[uuid]} + if all primarykey exist then data.notfound does not exist + if all primarykey does not exist data.found does not exist + */ + const res = { status: 200, data: {} }; + uuidprimarykeyList.forEach((id) => { + if (fs.existsSync(`${objectPath}/${objectName}/${id}.json`)) { + if (!res.data.found) res.data.found = []; + const objectdata = fs.readJsonSync( + `${objectPath}/${objectName}/${id}.json` + ); + if (!fieldList) { + res.data.found.push(objectdata); + } else { + const objinfo = {}; + fieldlList.forEach((k) => { + if (objectdata[k]) objinfo[k] = objectdata[k]; + }); + res.data.found.push(objinfo); + } + } else { + if (!res.data.notfound) res.data.notfound = []; + } + }); + return res; +}; +Odmdb.create = (objectPath, objectName, data) => { + /* + Create an objects data into objectName + @objectPath path to the folder that contain /objects/objectName/ /objectsInfo/objectName_lg.json /objectsMeta/objectName.json + @objectName name of object + @data data to check based on objectsMeta definition + */ +}; +Odmdb.update = (objectPath, objectName, data) => { + /* + Create an objects data into objectName + @objectPath path to the folder that contain /objects/objectName/ /objectsInfo/objectName_lg.json /objectsMeta/objectName.json + @objectName name of object + @data data to check based on objectsMeta definition + */ +}; +Odmdb.delete = (objectPath, objectName, data) => { + /* + Create an objects data into objectName + @objectPath path to the folder that contain /objects/objectName/ /objectsInfo/objectName_lg.json /objectsMeta/objectName.json + @objectName name of object + @data data to check based on objectsMeta definition + */ +}; +/*console.log("test Odmdb"); +console.log( + Odmdb.check( + "/media/phil/usbfarm/apxtrib/nationchains/socialworld/objects", + "nations", + { nationId: "123", status: "unchain" } + ) +);*/ +module.exports = Odmdb; diff --git a/models/Outputs.js b/app/models/Outputs.js similarity index 99% rename from models/Outputs.js rename to app/models/Outputs.js index 87f3da0..0b3c567 100755 --- a/models/Outputs.js +++ b/app/models/Outputs.js @@ -11,7 +11,7 @@ const smtpTransport = require( 'nodemailer-smtp-transport' ); const axios = require( 'axios' ); const { GoogleSpreadsheet } = require( 'google-spreadsheet' ); const config = require( '../tribes/townconf.js' ); -const checkdata = require( `../nationchains/socialworld/contracts/checkdata.js` ); +const Checkjson = require( `./Checkjson.js` ); const Outputs = {}; diff --git a/models/OutputsDev.js b/app/models/OutputsDev.js similarity index 99% rename from models/OutputsDev.js rename to app/models/OutputsDev.js index e184296..8f5e9bb 100755 --- a/models/OutputsDev.js +++ b/app/models/OutputsDev.js @@ -12,7 +12,7 @@ const axios = require( 'axios' ); const { GoogleSpreadsheet } = require( 'google-spreadsheet' ); const async = require( 'async' ); const config = require( '../tribes/townconf.js' ); -const checkdata = require( `${config.tribes}/${config.mayorId}/www/cdn/public/js/checkdata` ); +const Checkjson = require( `${config.tribes}/${config.mayorId}/www/cdn/public/js/Checkjson` ); const Outputs = {}; const sleep = ( milliseconds = 500 ) => new Promise( resolve => setTimeout( resolve, milliseconds ) ); diff --git a/models/Pagans.js b/app/models/Pagans.js similarity index 97% rename from models/Pagans.js rename to app/models/Pagans.js index 450e452..3474b1c 100755 --- a/models/Pagans.js +++ b/app/models/Pagans.js @@ -6,7 +6,7 @@ const jwt = require( 'jwt-simple' ); const UUID = require( 'uuid' ); const Outputs = require( './Outputs.js' ); const config = require( '../tribes/townconf.js' ); -const checkdata = require( `../nationchains/socialworld/contracts/checkdata.js`); +const Checkjson = require( `./Checkjson.js`); /* Gestion des utilisateurs connecte @@ -331,7 +331,7 @@ Pagans.getUser = ( UUID, tribeid, accessrights ) => { }; }; Pagans.getUserIdFromEMAIL = ( tribeid, EMAIL ) => { - if( !checkdata.test.EMAIL( EMAIL ) ) { + if( !Checkjson.test.EMAIL( EMAIL ) ) { return { status: 400, data: { @@ -368,7 +368,7 @@ Pagans.updateUserpassword = ( UUID, header, data ) => { }; } // console.log('Credentials are matching!'); - if( checkdata.test.password( {}, data.pswnew ) ) { + if( Checkjson.test.password( {}, data.pswnew ) ) { user.PASSWORD = bcrypt.hashSync( data.pswnew, config.saltRounds ); fs.outputJsonSync( `${config.tribes}/${header.xworkon}/users/${UUID}.json`, user, { spaces: 2 @@ -408,8 +408,8 @@ Pagans.createUser = ( header, data ) => { console.assert( config.loglevel == "quiet", 'EMAIL list', EMAIL ); // list.UUID est forcement unique car on est en update et pas en create if( !data.UUID ) data.UUID = UUID.v4(); - // pour la logique de checkdata il faut passer le parametre - const check = checkdata.evaluate( { + // pour la logique de Checkjson il faut passer le parametre + const Checkjson = Checkjson.evaluate( { list: { LOGIN, EMAIL, @@ -417,17 +417,17 @@ Pagans.createUser = ( header, data ) => { } }, ref, data ); console.assert( config.loglevel == "quiet", 'check & clean data before update ', check ); - if( check.invalidefor.length > 0 ) { + if( Checkjson.invalidefor.length > 0 ) { return { status: 403, data: { model: 'Pagans', - info: check.invalidefor + info: Checkjson.invalidefor } }; } const clientConfig = fs.readJsonSync( `${config.tribes}/${header.xworkon}/clientconf.json` ); - const user = check.data; + const user = Checkjson.data; user.DATE_CREATE = new Date() .toISOString(); user.PASSWORD = bcrypt.hashSync( clientConfig.genericpsw, config.saltRounds ); @@ -502,8 +502,8 @@ Pagans.updateUser = ( UUID, header, data ) => { .filter( e => emails[ e ] != user.UUID ); // console.log( 'EMAIL list', EMAIL ); // list.UUID est forcement unique car on est en update et pas en create - // pour la logique de checkdata il faut passer le parametre - const check = checkdata.evaluate( { + // pour la logique de Checkjson il faut passer le parametre + const Checkjson = Checkjson.evaluate( { profil: user[ 'apps' + header.xworkon + 'profil' ], list: { LOGIN, @@ -511,16 +511,16 @@ Pagans.updateUser = ( UUID, header, data ) => { UUID: [] } }, ref, data ); - if( check.invalidefor.length > 0 ) { + if( Checkjson.invalidefor.length > 0 ) { return { status: 403, data: { model: 'Pagans', - info: check.invalidefor, + info: Checkjson.invalidefor, } }; } - data = check.data; + data = Checkjson.data; let saveuser = false; let updateDatabase = false; Object.keys( data ) diff --git a/models/Referentials.js b/app/models/Referentials.js similarity index 100% rename from models/Referentials.js rename to app/models/Referentials.js diff --git a/models/Referentialssave.js b/app/models/Referentialssave.js similarity index 100% rename from models/Referentialssave.js rename to app/models/Referentialssave.js diff --git a/models/Setup.js b/app/models/Setup.js similarity index 84% rename from models/Setup.js rename to app/models/Setup.js index 6841b48..97f7a8f 100755 --- a/models/Setup.js +++ b/app/models/Setup.js @@ -2,26 +2,30 @@ const fs = require( 'fs-extra' ); const path = require( 'path' ); const dnsSync = require( 'dns-sync' ); const Mustache = require( 'mustache' ); -const Odmdb= require('./Odmdb.js'); - +const Nations = require('./Nations.js') const Setup = {}; +const nationsync = Nations.updateChains() + +if (nationsync.status!=200){ + console.log( '\x1b[31m Check your internet access, to setup this town we need to update the Nations. It seems we cannot do it' ); + process.exit(); +} if( !fs.existsSync( '/etc/nginx/nginx.conf' ) ) { console.log( '\x1b[31m Check documentation, nginx have to be installed on this server first, no /etc/nginx/nginx.conf available' ); process.exit(); } -if( !fs.existsSync( `./tribes/townconf.json` ) ) { +if( !fs.existsSync( './nationchains/tribes/index/conf.json' ) ){ console.log( `\x1b[42m####################################\nWellcome into apxtrib, this is a first install.\nWe need to make this server accessible from internet subdomain.domain to current IP. This setup will create your unique tribeid, with an admin login user to let you connect to the parameter interface.\nCheck README's project to learn more. more.\n#####################################\x1b[0m` ); - const townSetup = fs.readJsonSync( './nationchains/socialworld/setup/townSetup.json') ; - console.log( `Current setup conf from :./nationchains/socialworld/setup/townSetup.json\nChange with relevant setup data and rerun yarn setup` ) ; + const townSetup = fs.readJsonSync( './app/setup/townSetup.json') ; + console.log( `Current setup conf from :./app/setup/townSetup.json\nChange with relevant setup data and rerun yarn setup` ) ; console.log( townSetup ) const readline = require( 'readline' ); const rl = readline.createInterface( { input: process.stdin, output: process.stdout } ); - - rl.question( 'This is the data from setup/configsetup.json used, is it correct to use as first install (Yes/no)?', function ( rep1 ) { + rl.question( 'This is the data from ./app/setup/townSetup.json used, is it correct to use as first install (Yes/no)?', function ( rep1 ) { let quest = `This is a production install, please check that ${townSetup.townName}.${townSetup.nationName}.${townSetup.dns} IP is well redirect to tour server`; if( rep1 !== "Yes" ) process.exit( 0 ); if( townSetup.dns == 'unchain' ) { @@ -29,18 +33,21 @@ if( !fs.existsSync( `./tribes/townconf.json` ) ) { } rl.question( quest + '\nAre you sure to set this? (Yes/no)', function ( rep2 ) { if( rep2 == "Yes" ) { - const check = Setup.check( townSetup ); - if( check == "" ) { - const townconf=fs.readJsonSync('./nationchains/socialworld/setup/townSetup.json') + const Checkjson = Setup.check( townSetup ); + if( Checkjson == "" ) { + const townconf=fs.readJsonSync('./app/setup/townconf.json') // create tribes folder with townconf.json - fs.outputJsonSync(`./tribes/townconf.json`,{...townSetup,...townconf},{spaces:2}) - const Nationchains = require('./Nationchains'); + const towndata={...townSetup,...townconf}; + const Towns = require('./Towns'); const Tribes = require('./Tribes'); const Pagans = require('./Pagans'); - townSetup.object="town" - Nationschains.create(townSetup); + if (!towndata.mayorid ) Pagans.create + + Towns.create('./nationchains','./nationchains','towns',{...townSetup,...townconf}); + //Nationschains.create(townSetup); Tribes.create(townSetup); - Pagans.create(townSetup); + + // creer un lien symbolique vers /nationchains/ pour traiter les demandes via xworkon comme une tribe //Setup.config( townSetup ); } else { console.log( check ); @@ -59,7 +66,7 @@ if( !fs.existsSync( `./tribes/townconf.json` ) ) { console.log( 'Carefull you have already a config.js that is running. If you want to change remove config.js file and run again yarn setup' ); } -Setup.check = conf => { +Setup.Checkjson = conf => { var rep = ""; const nation_town=fs.readJsonSync('./nationchains/socialworld/objects/towns/searchindex/towns_nation_uuid.json'); if (!ObjectKeys(nation_town).includes(conf.nationName)){ @@ -68,8 +75,8 @@ Setup.check = conf => { if (nation_town[conf.nationName].includes(conf.townName)){ rep+=`This conf.townName already exist you have to find a unique town name per nation`; } - const getnation = Odmdb.get('./nationchains/socialworld/objects','towns',[conf.NationName];[nationId]) - if getnation.data.notfound + const getnation = Odmdb.get('./nationchains/socialworld/objects','towns',[conf.NationName],[nationId]) + //if getnation.data.notfound conf.language.forEach( l => { if( ![ "fr", "en", "it", "de", "sp" ].includes( l ) ) { rep += l + " Only fr,en,it,de,sp are available \n"; diff --git a/models/Tags.js b/app/models/Tags.js similarity index 100% rename from models/Tags.js rename to app/models/Tags.js diff --git a/app/models/Toolsbox.js b/app/models/Toolsbox.js new file mode 100755 index 0000000..9b950e0 --- /dev/null +++ b/app/models/Toolsbox.js @@ -0,0 +1,646 @@ +/* eslint-disable no-useless-escape */ +const fs = require("fs"); +const path = require("path"); +const bcrypt = require("bcrypt"); +const moment = require("moment"); +const utils = {}; + +console.log( + "Check in /utils/index.js to find usefull function for your dev.\n Feel free to send suggestion, code to maintainer of apxtrib project (see /package.json to get email).\n We'll add to the roadmap to add it." +); + +/** + * EMAIL + */ +/* const validateEmail = email => { + const regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + return regExp.test(email); +}; + +const validatePassword = pwd => { + const regExp = new RegExp( + /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.{}:|\s]{8,}/ + ); + return regExp.test(pwd); +}; + +const filterInvalidInArray = (array, validate) => + array ? array.filter(el => !validate(el)) : undefined; // return undefined when every elements is valid + +/** + * POSTAL CODE + */ +/* +const validatePostalCode = postalCode => + /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(postalCode); + +/** + * PHONE + */ +/* const validatePhoneNumber = phoneNumber => + /((^0[1-9]|\+[0-9]{3})([-. ]?[0-9]{2}){4}$)/.test(phoneNumber); + +const correctPhoneNumber = phone => + phone[0] === '0' ? '+33' + phone.substr(1) : phone; + +const Checkjson = (appProfil, referential, data) => { + // @TODO get a referentiel per object then check data validity and allowed access + // need to add referentiel manager + const invalidefor = []; + let updateDatabase = false; + Object.keys(data).forEach(field => { + switch (field) { + case 'token': + updateDatabase = true; + break; + case 'email': + if (!validateEmail(data.email)) { + invalidefor.push('ERREMAIL:' + field); + } else { + updateDatabase = true; + } + break; + case 'password': + if (!validatePassword(data.password)) { + invalidefor.push('ERRPWD:' + field); + } else { + data.password = bcrypt.hash(data.password, config.saltRounds); + updateDatabase = true; + } + break; + } + }); + return { invalidefor, data, updateDatabase }; +}; +*/ +//Permet d'attendre en milliseconde +// s'utilise avec async ()=>{ +// await sleep(2000) +//} +utils.sleep = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +utils.normalize = {}; +utils.normalize.telephonefr = (phone) => { + phone = phone.trim().replace(/[- .]/g, ""); + if ( + Checkjson.schema.properties.format.telephoenfr(phone) && + phone.length == 10 && + phone[0] == "0" + ) { + phone = "+33 " + phone.substring(1); + } + return phone; +}; +utils.normalize.zfill10 = (num) => { + let s = num + ""; + while (s.length < 10) s = "0" + s; + return s; +}; +utils.generemdp = (nbpos, fromchar) => { + if (!fromchar) { + const fromchar = "ABCDEFGHIJKLMNPQRSTUVWZY123456789"; + } + //const chaine = "ABCDEFGHIJKLMNPQRSTUVWZY123456789"; + let mdp = ""; + for (var i = 0; i < nbpos; i++) { + var pos = Math.floor(Math.random() * fromchar.length); + mdp += fromchar.substring(pos, pos + 1); + } + return mdp; +}; +utils.generecompteur = (filecpt, typeincrement) => { + let file = `${filecpt}/${typeincrement}.json`; + let prefix = ""; + if ((typeincrement = "ANNEESEMAINE")) { + file = `${filecpt}/${typeincrement}${moment().format( + "YYYY" + )}${moment().format("WW")}.json`; + prefix = `${moment().format("YYYY")}${moment().format("WW")}`; + } + let num = 1; + try { + num = parseInt(fs.readFileSync(file, "utf8")) + 1; + } catch (err) { + console.log("Nouveau compteur incrementale ", file); + } + fs.writeFileSync(file, num, "utf8"); + return prefix + num; +}; +/** + * CSV + */ +utils.json2csv = (jsondata, options, callback) => { + // uniquement json = [{niv1:val,niv1:[liste of val]}] + // console.log('_________________________'); + // console.log(jsondata) + // console.log('_________________________'); + if (jsondata.length == 0) { + return callback("Empty json", null); + } + if (!options.retln) options.retln = "\n"; + if (!options.sep) options.sep = ";"; + if (!options.arraysplitsep) options.arraysplitsep = ","; + if (!options.replacespecialcarJson2Csv) { + options.replacespecialcarJson2Csv = []; + } else { + if (typeof options.replacespecialcarJson2Csv == "string") { + //permet de passer des regex en string + options.replacespecialcarJson2Csv = eval( + options.replacespecialcarJson2Csv + ); + } + } + let etat = ""; + let csv = ""; + let entete = ""; + let prem = true; + for (const j in jsondata) { + // console.log(jsondata[j]) + for (const c in options.champs) { + if (prem) { + entete += options.champs[c] + options.sep; + } + if (jsondata[j][options.champs[c]]) { + if (options.array.indexOf(options.champs[c]) > -1) { + csv += + jsondata[j][options.champs[c]].join(options.arraysplitsep) + + options.sep; + } else { + let currentValue = ""; + if (jsondata[j][options.champs[c]]) + currentValue += jsondata[j][options.champs[c]]; + options.replacespecialcarJson2Csv.forEach((re) => { + //console.log(currentValue) + currentValue = currentValue.replace(re[1], re[0]); + }); + csv += currentValue + options.sep; + } + } else { + csv += options.sep; + } + } + csv = csv.substring(0, csv.length - 1) + options.retln; + if (prem) { + prem = false; + entete = entete.substring(0, entete.length - 1) + options.retln; + // console.log(entete) + } + } + // return entete + csv; + if (etat == "") { + return callback(null, entete + csv); + } else { + return callback(etat, null); + } +}; +/** + * Get headers from first line of CSV + * @param {array} lines array of string which contains each csv lines + * @return {array} string array of headers + */ +utils.getHeaders = (lines, sep) => + lines[0].split(sep).map((i) => i.replace(/"/g, "")); +/** + * [csv2json description] + * @param {object} csv object of csv file that has been read + * @param {object} options object containing csv options, headers, ... + {retln:'code de retour de ligne \n ou \n\r', + sep:'code to split cells', + champs:[ch1,ch2,...] catch only those field, + array:[ch1, ] can have more than one field champs with same name then data are push into an array } + * @param {Function} callback callback function + * @return {callback} - return an error if error, else return json + it convert a csv file into a json = [{field:value}] + +Usage example: +fiche.csv2article = (err, fiche) => { + if (!err) { + console.log(fiche) + } +} +utils.csv2json(fs.readFileSync('./devdata/tribee/aubergenville/infoexterne/localbusiness.csv', 'utf-8'), { + retln: "\n", + sep: ";", + champs: ["NOM", "OBJET", "ADRESSE_PRO", "CP_PRO", "VILLE_PRO", "ZONE", "PHONE_PRO", "HORAIRESDESC", "HORAIREDATA", "URL", "FACEBOOK", "INSTA", "EMAIL_PRO", "IMG", "TAG"], + array: ["TAG", "PHONE_PRO", "EMAIL_PRO"] +}, fiche.csv2article) + + */ +utils.replacecarbtweendblquote = (csv, car, carremplacant) => { + /* + return csv text with any car betwenn 2 " by CARSEPARATOR + */ + let newcsv = ""; + let txtencours = ""; + let flagouvert = false; + const sepreg = new RegExp(`${car}`, "gmi"); + for (let j = 0; j < csv.length; j++) { + //if((csv[j] == "\"" && csv[j + 1] && csv[j + 1] != "\"") || (csv[j] == "\"" && csv[j - 1] && csv[j - 1] != "\"") || (csv[j] == "\"" && csv[j - 1] && csv[j - 2] && csv[j - 1] != "\"" && csv[j - 2] != "\"")) { + if (csv[j] == '"') { + if (flagouvert) { + // on cherche à ferme une chaine de texte + if (csv[j + 1] == '"') { + //on a "" consecutif qu'on remplace par "" et on fait j+1 + txtencours += '""'; + j++; + } else { + // on a bien une fermeture + flagouvert = false; + newcsv += txtencours.replace(sepreg, carremplacant); + txtencours = '"'; + } + } else { + // on ouvre une chaine + flagouvert = true; + //on met le contenu précédent ds newcsv + newcsv += txtencours; + txtencours = '"'; + } + //} else if((csv[j] !== "\n") && (csv[j + 1] && csv[j] + csv[j + 1] !== "\n\r")) { + } else if (csv[j] !== "\n") { + txtencours += csv[j]; + // } else if((csv[j] == "\n") || (csv[j + 1] && csv[j] + csv[j + 1] == "\n\r")) { + } else if (csv[j] == "\n") { + if (!flagouvert) txtencours += "\n"; + } + } + return newcsv + txtencours; +}; +utils.analysestring = (string) => { + let buftxt = ""; + let bufcode = ""; + let i = 0; + let avecRL = false; + for (let p = 0; p < string.length; p++) { + if (string[p].charCodeAt() == 10) { + buftxt += "[RL]"; + avecRL = true; + } else { + buftxt += string[p]; + } + bufcode += "-" + string[p].charCodeAt(); + if (i == 20) { + if (avecRL) { + console.log(`${buftxt} - ${bufcode}`); + } else { + console.log(`${buftxt} ---- ${bufcode}`); + } + i = 0; + buftxt = ""; + bufcode = ""; + avecRL = false; + } + i++; + } +}; + +const txtstring = `32932,BK_F2F_B_COM_10x1H-09,"My Communication Workshop ""Session N°9 - 1H""","

 

+ + + + + + +
+

Learner who needs to develop their ability to communicate effectively at work, both in writing and speaking

+
",,english,2,0,,2,0,classroom,"0000-00-00 00:00:00","0000-00-00 00:00:00",0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32932,1101,,"BUSINESS KEYS",0, +32933,BK_F2F_B_COM_10x1H-10,"My Communication Workshop Session N°10 - 1H","

 

+ + + + + + +
+

Learner who needs to develop their ability to communicate effectively at work, both in writing and speaking

+
",,english,2,0,,2,0,classroom,"0000-00-00 00:00:00","0000-00-00 00:00:00",0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32933,1101,,"BUSINESS KEYS",0, +32934,BK_F2F_B_JOB_10x1H-01,"My Job Search Workshop Session N°1 - 1H","

PACK JOB SEARCH

",,english,2,0,,2,0,classroom,,,0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32934,1108,,,0, +32935,BK_F2F_B_JOB_10x1H-02,"My Job Search Workshop Session N°2 - 1H","

PACK JOB SEARCH

",,english,2,0,,2,0,classroom,,,0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32935,1108,,,0,`; +//utils.analysestring(txtstring) +//console.log(utils.replacecarbtweendblquote(txtstring, ",", 'CARSEPARATOR') +// .split("\n")[0].split(",")) +utils.csv2json = (csv, options, callback) => { + // EN CAS DE PB AVEC UN FICHIER EXCEL RECALCITRANT + // l'ouvrir dans calc linux et sauvegarder csv utf8, ; , " enregistrer le contenu de la cellule comme affiché + console.log("\n--------------- CSV2JSON ---------------\n"); + // Default CSV options + if (!options.retln) options.retln = "\n"; + if (csv.indexOf("\n\r") > -1) options.retln = "\n\r"; + if (!options.sep) options.sep = ";"; + //gestion d un separateur dans une chaine de texte + //const regseptext = new RegExp(`${options.sep}(?!(?:[^"]*"[^"]*")*[^"]*$)`, 'gm'); + //csv = csv.replace(regseptext, "CARACSEPAR"); + // csv = utils.replacecarbtweendblquote(csv, options.retln, "RETLIGNE") + csv = utils.replacecarbtweendblquote(csv, options.sep, "CARSEPARATOR"); + if (!options.replacespecialcarCsv2Json) { + options.replacespecialcarCsv2Json = []; + } else { + if (typeof options.replacespecialcarCsv2Json == "string") { + //permet de passer des regex en string + options.replacespecialcarCsv2Json = eval( + options.replacespecialcarCsv2Json + ); + } + } + const result = []; + const lines = csv.split(options.retln); + const headers = utils.getHeaders(lines, options.sep); + let unknownHeaders = ""; + //console.log('headers', headers) + //console.log('options.champs', options.champs) + headers.forEach((header) => { + // Si un header n'est pas présent dans la liste des champs prédéfinis + // on l'ajoute aux champs inconnus + if (options.champs.indexOf(header) === -1) { + unknownHeaders += `${header}, `; + } + }); + if (unknownHeaders !== "") { + const errorMsg = `CSV2JSON() - Champs inconnus : ${unknownHeaders}`; + return callback(errorMsg, null); + } + lines.forEach((line, index) => { + // Skip headers line or empty lines + if (index === 0 || line.replace(/\s/g, "").length === 0) { + return; + } + // pour debuguer on met origincsv pour voir la ligne d'origine + const currentLineData = { origincsv: line, linenumber: index }; + const currentLine = line.split(options.sep); // Current string in the line + for (let j = 0; j < headers.length; j++) { + // Si la ligne n'est pas vide + if (currentLine[j]) { + // On clean le champs + // ajout eventuel de modification de caracter reservé ; dans les libelléetc... + let currentValue = currentLine[j].trim(); + //on transforme le caractere separateur modifié entre double quote + currentValue = currentValue.replace("CARSEPARATOR", options.sep); + options.replacespecialcarCsv2Json.forEach((re) => { + currentValue = currentValue.replace(re[0], re[1]); + }); + // Si le header est un email + if (headers[j].includes("EMAIL")) { + // Supprimer tous les espaces + currentValue = currentLine[j].replace(/\s/g, ""); + } + // on check si le chamos doit être numerique + if (options.numericfield.includes(headers[j])) { + currentValue = currentLine[j].replace(/\,/g, "."); + try { + const test = parseFloat(currentValue); + } catch (er) { + return callback( + `${headers[j]} contiens la valeur -${currentValue}- et devrait être numerique`, + null + ); + } + } + if (currentValue) { + // Si le header actuel est de type array + // Cela signifie que le header apparaît plusieurs fois dans le CSV + // et que les valeurs correspondantes à ce header + // doivent être mis dans un array + if (options.array && options.array.indexOf(headers[j]) > -1) { + // Si le tableau pour ce header n'existe pas on le crée + if (!currentLineData[headers[j]]) { + currentLineData[headers[j]] = []; + } + if (options.arraysplitsep) { + currentValue.split(options.arraysplitsep).forEach((v) => { + currentLineData[headers[j]].push(v); + }); + } else { + currentLineData[headers[j]].push(currentValue); + } + } else { + // Si un header est déjà présent pour la ligne + // alors que il n'est pas spécifié comme étant un array + // on retourne une erreur + if (currentLineData[headers[j]]) { + const errorMsg = `Le champ ${headers[j]} est présent plusieurs fois alors qu'il n'est pas spécifié comme étant un array !`; + return callback(errorMsg, null); + } + currentLineData[headers[j]] = currentValue; + } + } + } + } + result.push(currentLineData); + }); + return callback(null, result); +}; +/** + * [csvparam2json description] + * @param {object} csv object of csv file that has been read + * @param {object} options object containing csv options, headers, ... + {retln:'code de retour de ligne \n ou \n\r', + sep:'code to split cells', + champs:[ch1,ch2,...] catch only those field, + array:[ch1, ] can have more than one field champs with same name then data are push into an array } + * @param {Function} callback callback function + * @return {callback} - return an error if error, else return json + it converts a csv with 3 column col1;col2;col3 in a json in a tree + if in col1 we have __ => then it splits a leaf + col1 = xxxx__yyyy ; col2 = value ; col3 = comment that is ignored + return data = {xxxx:{yyyy:value}} + col1 = xxxx; col2 = value; col3 = comment ignored +return data = {xxxx:value} + +Usage example: +fiche.csvparam2article = (err, fiche) => { + if (!err) { + console.log(fiche) + } +} +utils.csvparam2json(fs.readFileSync('./devdata/tribee/aubergenville/infoexterne/localbusiness.csv', 'utf-8'), { + retln: "\n", + sep: ";", + champs: ["NOM", "OBJET", "ADRESSE_PRO", "CP_PRO", "VILLE_PRO", "ZONE", "PHONE_PRO", "HORAIRESDESC", "HORAIREDATA", "URL", "FACEBOOK", "INSTA", "EMAIL_PRO", "IMG", "TAG"], + array: ["TAG", "PHONE_PRO", "EMAIL_PRO"] +}, fiche.csv2article) + + */ +utils.csvparam2json = (csv, options, callback) => { + console.log("\n--------------- CSVPARAM2JSON ---------------\n"); + let etat = ""; + const param = {}; + if (!options.retln) { + options.retln = "\n"; + } + if (csv.indexOf("\n\r") > -1) { + options.retln = "\n\r"; + } + if (!options.sep) { + options.sep = ";"; + } + if (!options.seplevel) { + options.seplevel = "__"; + } + if (!options.replacespecialcarCsv2Json) { + options.replacespecialcarCsv2Json = []; + } else { + if (typeof options.replacespecialcarCsv2Json == "string") { + //permet de passer des regex en string + options.replacespecialcarCsv2Json = eval( + options.replacespecialcarCsv2Json + ); + } + } + const lines = csv.split(options.retln); + for (let i = 0; i < lines.length; i++) { + const infol = lines[i].split(options.sep); + //console.log(infol) + if (infol[0].length > 4 && infol.length < 2) { + // si le 1er element à plus de 4 caractere et s'il y a moins de 3 colonnes c'est qu'il y a un pb + etat += `Erreur sur ${lines[i]} moins de 3 column separé par ${options.sep}`; + continue; + } + // On ajoute ici la gestion de tous les caracteres spéciaux + // reservées pour le csv ; ' etc..' + if (infol[1] && infol[1] + "" == infol[1]) { + options.replacespecialcarCsv2Json.forEach((re) => { + //console.log("gggggggggggggggggggg", infol[1]) + infol[1] = infol[1].replace(re[0], re[1]); + }); + // console.log(infol[1]) + infol[1] = infol[1].replace(/'|’/g, '"'); + //console.log(infol[1]) + if (infol[1].toLowerCase() === "true") { + infol[1] = true; + } else if (infol[1].toLowerCase() === "false") { + infol[1] = false; + } + } + console.log(infol[1]); + //supprime des lignes vides + if (infol[0] == "") continue; + if (infol[0].indexOf(options.seplevel) == -1) { + param[infol[0]] = infol[1]; + continue; + } else { + const arbre = infol[0].split(options.seplevel); + switch (arbre.length) { + case 1: + param[arbre[0]] = infol[1]; + break; + case 2: + if (arbre[1] != "ARRAY") { + if (!param[arbre[0]]) param[arbre[0]] = {}; + param[arbre[0]][arbre[1]] = infol[1]; + } else { + if (!param[arbre[0]]) param[arbre[0]] = []; + //console.log('aff', infol[1].substring(1, infol[1].length - 1).replace(/""/g, '"')) + eval("result=" + infol[1]); + //.substring(1, infol[1].length - 1).replace(/""/g, '"')) + param[arbre[0]].push(result); + } + break; + case 3: + if (arbre[2] != "ARRAY") { + if (!param[arbre[0]]) param[arbre[0]] = {}; + if (!param[arbre[0]][arbre[1]]) param[arbre[0]][arbre[1]] = {}; + param[arbre[0]][arbre[1]][arbre[2]] = infol[1]; + } else { + if (!param[arbre[0]]) param[arbre[0]] = {}; + if (!param[arbre[0]][arbre[1]]) param[arbre[0]][arbre[1]] = []; + //eval("result = \"test\""); + //console.log(result); + eval("result=" + infol[1]); + //.substring(1, infol[1].length - 1).replace(/""/g, '"')) + param[arbre[0]][arbre[1]].push(result); + } + break; + case 4: + if (arbre[3] != "ARRAY") { + if (!param[arbre[0]]) param[arbre[0]] = {}; + if (!param[arbre[0]][arbre[1]]) param[arbre[0]][arbre[1]] = {}; + if (!param[arbre[0]][arbre[1]][arbre[2]]) + param[arbre[0]][arbre[1]][arbre[2]] = {}; + param[arbre[0]][arbre[1]][arbre[2]][arbre[3]] = infol[1]; + } else { + if (!param[arbre[0]]) param[arbre[0]] = {}; + if (!param[arbre[0]][arbre[1]]) param[arbre[0]][arbre[1]] = {}; + if (!param[arbre[0]][arbre[1]][arbre[2]]) + param[arbre[0]][arbre[1]][arbre[2]] = []; + eval("result=" + infol[1]); + //.substring(1, infol[1].length - 1).replace(/""/g, '"')) + param[arbre[0]][arbre[1]][arbre[2]].push(result); + break; + } + default: + break; + } + } + } + // JSON.parse(JSON.stringify(param)) + console.log( + "kkkkkkkkkkkkkkkkkk", + param["catalogue"]["filtrecatalog"]["searchengine"] + ); + if (etat == "") { + return callback(null, JSON.parse(JSON.stringify(param))); + } else { + return callback(etat, null); + } +}; +utils.levenshtein = (a, b) => { + if (a.length === 0) return b.length; + if (b.length === 0) return a.length; + let tmp, i, j, prev, val, row; + // swap to save some memory O(min(a,b)) instead of O(a) + if (a.length > b.length) { + tmp = a; + a = b; + b = tmp; + } + row = Array(a.length + 1); + // init the row + for (i = 0; i <= a.length; i++) { + row[i] = i; + } + // fill in the rest + for (i = 1; i <= b.length; i++) { + prev = i; + for (j = 1; j <= a.length; j++) { + if (b[i - 1] === a[j - 1]) { + val = row[j - 1]; // match + } else { + val = Math.min( + row[j - 1] + 1, // substitution + Math.min( + prev + 1, // insertion + row[j] + 1 + ) + ); // deletion + } + row[j - 1] = prev; + prev = val; + } + row[a.length] = prev; + } + return row[a.length]; +}; +utils.testinarray = (array, arrayreferent) => { + // au moins un element de array existe dans arryreferent + let exist = false; + if (arrayreferent) { + //console.log('arrrrrrrrrrrrrrr', arrayreferent) + array.forEach((e) => { + //console.log(e) + if (arrayreferent.includes(e)) exist = true; + }); + } + return exist; +}; +/* +DIRECTORY +*/ +const isDirectory = (source) => fs.lstatSync(source).isDirectory(); +const getDirectories = (source) => + fs + .readdirSync(source) + .map((name) => path.join(source, name)) + .filter(isDirectory); + +module.exports = utils; diff --git a/app/models/Towns.js b/app/models/Towns.js new file mode 100644 index 0000000..c82657f --- /dev/null +++ b/app/models/Towns.js @@ -0,0 +1,13 @@ +const bcrypt = require( 'bcrypt' ); +const fs = require( 'fs-extra' ); +const glob = require( 'glob' ); +const moment = require( 'moment' ); +const jwt = require( 'jwt-simple' ); +const UUID = require( 'uuid' ); +const config = require( '../tribes/townconf.js' ); +const Checkjson = require( `./Checkjson.js`); + +const Towns = {}; + + +module.exports= Towns; \ No newline at end of file diff --git a/models/Tribes.js b/app/models/Tribes.js similarity index 99% rename from models/Tribes.js rename to app/models/Tribes.js index b420aec..fe94505 100755 --- a/models/Tribes.js +++ b/app/models/Tribes.js @@ -9,11 +9,10 @@ const dnsSync = require( 'dns-sync' ); const jwt = require( 'jwt-simple' ); const moment = require( 'moment' ); const UUID = require( 'uuid' ); -const Outputs = require( './Outputs.js' ); const Pagans = require( './Pagans.js' ); const config = require( '../tribes/townconf' ); -const checkdata = require( `../nationchains/socialworld/contracts/checkdata.js`); +const Checkjson = require( `./Checkjson.js`); /* tribeid manager diff --git a/models/UploadFiles.js b/app/models/UploadFiles.js similarity index 100% rename from models/UploadFiles.js rename to app/models/UploadFiles.js diff --git a/nationchains/socialworld/contracts/lg/checkdata_en.json b/app/models/lg/Checkjson_en.json similarity index 88% rename from nationchains/socialworld/contracts/lg/checkdata_en.json rename to app/models/lg/Checkjson_en.json index 119f72b..9b74f1b 100644 --- a/nationchains/socialworld/contracts/lg/checkdata_en.json +++ b/app/models/lg/Checkjson_en.json @@ -1,5 +1,5 @@ { - "typedoesnnotexistinschema":"This type in your propertie is not manage by checkdata.js", + "typedoesnnotexistinschema":"This type in your propertie is not manage by Checkjson.js", "dataerrpropertie":"Check your data that not fit your schema rules propertie", "dataerrpropertiesrequired":"This propertie is required and not present in your data" } \ No newline at end of file diff --git a/app/models/lg/Odmdb_en.json b/app/models/lg/Odmdb_en.json new file mode 100644 index 0000000..8576485 --- /dev/null +++ b/app/models/lg/Odmdb_en.json @@ -0,0 +1,4 @@ +{ + "schemanotfound":"Schema not found in {{fullpath}}", + "pathnamedoesnotexist":"ObjectPath or objectName does not exist {{fullpath}}" +} \ No newline at end of file diff --git a/nationchains/socialworld/contracts/unittest/checkdata.js b/app/models/unittest/Checkjson.js similarity index 87% rename from nationchains/socialworld/contracts/unittest/checkdata.js rename to app/models/unittest/Checkjson.js index 21920b8..64a962e 100644 --- a/nationchains/socialworld/contracts/unittest/checkdata.js +++ b/app/models/unittest/Checkjson.js @@ -2,21 +2,27 @@ Unit testing */ const assert = require("assert"); -const checkdata = require("../checkdata.js"); +const Checkjson = require("../Checkjson.js"); -const ut = { name: "checkdata" }; +const ut = { name: "Checkjson" }; const schema = { $schema: "http://json-schema.org/schema#", - title: "Dummy schema to test checkdata.js", - description: "Checkdata is use on server as well as into a browser", + title: "Dummy schema to test Checkjson.js", + description: "Checkjson is use on server as well as into a browser", $comment: "We change schema type on the fly to simplify the test", - type: "Object", + type: "object", properties: { totest: {}, }, }; const testproperties = [ + { + name: "test0", + data: { totest: true }, + properties: { totest: { type: "boolean" } }, + status: 200 + }, { name: "test1", data: { totest: "blabla" }, @@ -126,7 +132,7 @@ ut.testproperties = (options) => { let msg = ""; testproperties.forEach((t) => { schema.properties = t.properties; - const res = checkdata.schema.data(schema, {}, t.data); + const res = Checkjson.schema.data(schema, t.data); if (res.status != t.status) { msg = (msg == "") ? "Unconsistent testproperties() name list: " : `${msg},`; if (options.verbose) { @@ -140,7 +146,7 @@ ut.testproperties = (options) => { }; ut.run = (options) => { - console.log("Test checkdata properties"); + console.log("Test Checkjson properties"); ut.testproperties(options); }; module.exports = ut; diff --git a/app/models/unittest/Odmdb.js b/app/models/unittest/Odmdb.js new file mode 100644 index 0000000..1015e42 --- /dev/null +++ b/app/models/unittest/Odmdb.js @@ -0,0 +1,72 @@ +/* +Unit testing +*/ +const assert = require("assert"); +const fs=require('fs-extra'); +const path= require('path'); +const Odmdb = require("../Odmdb.js"); +const {generemdp} = require('../../nationchains/socialworld/contracts/toolsbox.js'); + +const ut = { name: "Odmdb" }; +/* +We test only search and indexation here +Create Update Read and Delete are unit testing with specificities of each Object. + +To do that we create in tmp a dummy data folder for a dummy schema object +*/ +const schema = { + $schema: "http://json-schema.org/schema#", + title: "Dummy schema to test Checkjson.js", + description: "Checkjson is use on server as well as into a browser", + $comment: "We change schema type on the fly to simplify the test", + type: "object", + properties: { + uuid: { + type:"string", + format:"uuid", + default:"=uuid.v4()" + }, + dtcreate:{ + type:"string", + format:"datetime", + default:"=date.now()" + }, + tag:{ + type:"string", + enum:["t1","t2","t3"], + default:"t1" + }, + info:{ + type:"string", + minLength: 10, + default:"=generemdp(255,'ABCDEFGHIJKLM 12340')" + } + }, + required:["uuid"], + apxprimarykey:"uuid", + apxuniquekey:["info"], + apxsearchindex:{ + "uuid":{"list":[],"taginfo":['tag','info'],"all":""}, + "info":{"uuid":['uuid']} + } + }; + + const obj={tag:"t1",info:"Lorem ipsum A"} + +ut.createanobject=(schema,obj)=>{ + + const res={status:200,err:[]} + return res +} + +ut.run = (options) => { + const objectPath=path.resolve(__dirname,'../../tmp/testobjects'); + const schemaPath=path.resolve(__dirname,'../../tmp/testschema'); + if (!fs.existsSync(objectPath)) fs.ensureDirSync(objectPath); + if (!fs.existsSync(schemaPath)) fs.ensureDirSync(schemaPath); + const createenvobj=Odmdb.setObject(schemaPath,objectPath,"objtest",schema,{},"en"); + assert.deepEqual(createenvobj,{status:200},JSON.stringify(createenvobj)); + const checkschema= Odmdb.schema(schemaPath,"objtest",true) + assert.deepEqual(checkschema.status,200,JSON.stringify(checkschema)) + }; +module.exports = ut; \ No newline at end of file diff --git a/routes/messages.js b/app/routes/messages.js similarity index 92% rename from routes/messages.js rename to app/routes/messages.js index 217cc8a..20438f9 100755 --- a/routes/messages.js +++ b/app/routes/messages.js @@ -30,7 +30,7 @@ router.put( '/:objectname/:uuid', checkHeaders, isAuthenticated, ( req, res ) => // if does not exist and accessright C then it create it with uuid // then if req.body.tplmessage => render email with data // No data management are done here, if need you can add plugin to create a workflow based object - // if need specific data check => req.body.callback={tribeidpugin,pluginname,function} will run pluginname.function(data) add data run specific stuf before saved the message object in /objectname/data.uuid_lg/json + // if need specific data Checkjson => req.body.callback={tribeidpugin,pluginname,function} will run pluginname.function(data) add data run specific stuf before saved the message object in /objectname/data.uuid_lg/json let result; console.log( "object", req.params.objectname ) if( req.params.objectname == 'notifications' ) { diff --git a/routes/nationchains.js b/app/routes/nationchains.js similarity index 100% rename from routes/nationchains.js rename to app/routes/nationchains.js diff --git a/app/routes/odmdb.js b/app/routes/odmdb.js new file mode 100644 index 0000000..f44ada2 --- /dev/null +++ b/app/routes/odmdb.js @@ -0,0 +1,78 @@ +const express = require( 'express' ); +const glob = require( 'glob' ); +const path = require( 'path' ); +// Classes +const Odmdb = require( '../models/Odmdb.js' ); +// Middlewares +const checkHeaders = require( '../middlewares/checkHeaders' ); +const isAuthenticated = require( '../middlewares/isAuthenticated' ); +const hasAccessrighton = require( '../middlewares/hasAccessrighton' ); +const router = express.Router(); + +router.get('/searchauth/:objectname/:question',checkHeaders,isAuthenticated,( req, res ) => { + /** + * + * + */ + console.log( 'route referentials get all language' + req.params.objectname + '-' + req.params.question ); + const getref = Referentials.getref( true, req.params.source, req.params.idref, req.session.header.xworkon, req.session.header.xlang ); + // Return any status the data if any erreur return empty object + res.jsonp( getref.payload.data ); +} ); +router.get('schema/:objectname', checkHeaders, isAuthenticated,(req,res)=>{ + /** + * @api {get} /odmdb/schema/:objectname + * @apiName GetSchema + * @apiGroup Odmdb + * + * @apiUse apxHeader + * + * @apiParam {String} objectname Mandatory if headers.xworkon == nationchains then into ./nationchains/ else into ./tribes/xworkon/ + * + * @apiError (404) {string} info a key word to understand not found schema + * @apiError (404) {string} ref an string to find referential to get description of info in xlang request + * @apiError (404) {object} [moreinfo} an object with element to render ref_lg.json[info] to understand error + * + * @apiSuccess (200) {object} data contains schema requested + * + */ + const fullpath = path.resolve(`${__dirname}/tribes/${req.session.header.xworkon}/schema/${req.params.pathobjectname}.json`); + if (fs.existsSync(fullpath)){ + res.status(200).json(data:fs.readJsonSync(fullpath)) + }else{ + res.status(404).json(info:"schemanotfound", ref:"odmdb", moreinfo:{fullpath}) + } +}) +router.put('schema/:objectname', checkHeaders, isAuthenticated,(req,res)=>{ + /** + * @api {put} /odmdb/schema/:objectname + * @apiName putSchema + * @apiGroup Odmdb + * + * @apiUse apxHeader + * + * @apiParam {String} objectname Mandatory if headers.xworkon == nationchains then into ./nationchains/ else into ./tribes/xworkon/ + * @apiBody {string} schemapath where to store schema .../schema + * @apiBody {string} objectpath where to store object ...objectname/index/config.json + * @apiBody {json} schema content + * @apiBody {json} schemalang content in lg + * @apiBody {string} lang define which schemalg is (2 letters) + * + * @apiError (404) {string} info a key word to understand not found schema + * @apiError (404) {string} ref an string to find referential to get description of info in xlang request + * @apiError (404) {object} [moreinfo} an object with element to render ref_lg.json[info] to understand error + * + * @apiSuccess (200) {object} data contains schema requested + * + */ + const fullpath = path.resolve(`${__dirname}/tribes/${req.session.header.xworkon}/schema/${req.params.pathobjectname}.json`); + const set=Odmdb.setObject(path.resolve(`${__dirname}/tribes/${req.session.header.xworkon}`),) + + if (fs.existsSync(fullpath)){ + res.status(200).json(data:fs.readJsonSync(fullpath)) + }else{ + res.status(404).json(info:"schemanotfound", ref:"odmdb", moreinfo:{fullpath}) + } +}) + +module.exports = router; diff --git a/routes/outputs.js b/app/routes/outputs.js similarity index 100% rename from routes/outputs.js rename to app/routes/outputs.js diff --git a/routes/pagans.js b/app/routes/pagans.js similarity index 100% rename from routes/pagans.js rename to app/routes/pagans.js diff --git a/routes/referentials.js b/app/routes/referentials.js similarity index 100% rename from routes/referentials.js rename to app/routes/referentials.js diff --git a/routes/tags.js b/app/routes/tags.js similarity index 100% rename from routes/tags.js rename to app/routes/tags.js diff --git a/routes/tribes.js b/app/routes/tribes.js similarity index 100% rename from routes/tribes.js rename to app/routes/tribes.js diff --git a/routes/uploadFiles.js b/app/routes/uploadFiles.js similarity index 100% rename from routes/uploadFiles.js rename to app/routes/uploadFiles.js diff --git a/apxtrib.js b/apxtrib.js index a5491b3..2cadab4 100755 --- a/apxtrib.js +++ b/apxtrib.js @@ -16,18 +16,48 @@ if( !fs.existsSync( '/etc/nginx/nginx.conf' ) ) { console.log( '\x1b[31m Check documentation, nginx have to be installed on this server first, no /etc/nginx/nginx.conf available, install then rerun yarn command.' ); process.exit(); } -if( !fs.existsSync( './tribes/townconf.js' ) ) { - console.log( `\x1b[42m#########################################################################\x1b[0m\n\x1b[42mWellcome into apxtrib, init your town and first tribe by 'yarn setup'. \x1b[0m \n\x1b[42mThen 'yarn dev' or 'yarn startpm2'. Check README's project to learn more.\x1b[0m\n\x1b[42m#########################################################################\x1b[0m` ); +if( !fs.existsSync( './nationchains/tribes/index/conf.json' ) ) { + // this is a first installation of a dev or prod machine + const readline = require( 'readline' ); + const rl = readline.createInterface( { + input: process.stdin, + output: process.stdout + } ); + const townconf = fs.readJsonSync( './nationchains/www/setup/townconf.json') ; + townconf.sudoerUser=process.env.USER; + townconf.dirname=__dirname; + townconf.nginx.include.push(`${__dirname}/nationchains/**/nginx_*.conf`); + townconf.nginx.logs=`${__dirname}/nationchains/logs/nginx`; + townconf.nginx.website='setup'; + townconf.nginx.fswww='nationchains/';//for a local tribe nationchains/tribes/tribeid + townconf.nginx.tribeid="town" + console.log(townconf) + + rl.question( 'This is the first install from ./nationchains/www/setup/townconf.json used, this will change your nginx config (/etc/nginx.conf will be saved as /etc/nginxconf.saved) (Yes/no)?', function ( rep1 ) { + let quest = `This is a production install, please check that ${townconf.townName}.${townconf.nationName}.${townconf.dns} IP is well redirect to tour server`; + if( rep1 !== "Yes" ) process.exit( 0 ); + + //console.log(process.env) + // saved and change nginx conf + const mustache=require('Mustache'); + fs.moveSync("/etc/nginx/nginx.conf","/etc/nginx/nginxconf.saved"); + const tplnginxconf=fs.readFileSync("./nationchains/www/setup/nginx/nginx.conf.mustache","utf8"); + fs.outputFileSync("/etc/nginx/nginx.conftest",mustache.render(tplnginxconf, townconf),"utf8") + const tplnginxwww=fs.readFileSync("./nationchains/www/setup/nginx/modelwebsiteconf.mustache","utf8"); + fs.outputFileSync(`./${townconf.nginx.fswww}www/nginx_${townconf.nginx.website}.conf`,mustache.render(tplnginxwww, townconf),"utf8") + //restart nginx + //fs.outputJsonSync('./nationchains/tribes/index/conf.json',setupconf); + console.log( `\x1b[42m#########################################################################\x1b[0m\n\x1b[42mWellcome into apxtrib, init your town and first tribe by 'yarn setup'. \x1b[0m \n\x1b[42mThen 'yarn dev' or 'yarn startpm2' or 'yarn unittest'. Check README's project to learn more.\x1b[0m\n\x1b[42m#########################################################################\x1b[0m` ); process.exit(); } -// config.js exist in any case from Setup.checkinit(); -const config = require( './tribes/townconf.js' ); +const config = require( './nationchains/tribes/index/conf.json' ); // Tribes allow to get local apxtrib instance context // dataclient .tribeids [] .DOMs [] .routes (plugins {url:name route:path}) .appname {tribeid:[website]} -const dataclient = require( './models/Tribes' ) +const dataclient = require( './app/models/Tribes' ) .init(); console.log( 'allowed DOMs to access to this apxtrib server: ', dataclient.DOMs ) const app = express(); + Object.keys(config.appset).forEach(p=>{ app.set(p,config.appset[p]) }) diff --git a/setup/ASUPconfig.jsold b/asupsetup/ASUPconfig.jsold similarity index 100% rename from setup/ASUPconfig.jsold rename to asupsetup/ASUPconfig.jsold diff --git a/setup/apixtribe.crabdance.com.mustache b/asupsetup/apixtribe.crabdance.com.mustache similarity index 100% rename from setup/apixtribe.crabdance.com.mustache rename to asupsetup/apixtribe.crabdance.com.mustache diff --git a/setup/config.mustache b/asupsetup/config.mustache similarity index 100% rename from setup/config.mustache rename to asupsetup/config.mustache diff --git a/setup/configsetup.json b/asupsetup/configsetup.json similarity index 100% rename from setup/configsetup.json rename to asupsetup/configsetup.json diff --git a/setup/data/domain/apixpress/blockchains/blocks/0.json b/asupsetup/data/domain/apixpress/blockchains/blocks/0.json similarity index 100% rename from setup/data/domain/apixpress/blockchains/blocks/0.json rename to asupsetup/data/domain/apixpress/blockchains/blocks/0.json diff --git a/setup/data/domain/apixpress/blockchains/nodes/apixpress.ndda.fr b/asupsetup/data/domain/apixpress/blockchains/nodes/apixpress.ndda.fr similarity index 100% rename from setup/data/domain/apixpress/blockchains/nodes/apixpress.ndda.fr rename to asupsetup/data/domain/apixpress/blockchains/nodes/apixpress.ndda.fr diff --git a/setup/data/domain/apixpress/clientconf.mustache b/asupsetup/data/domain/apixpress/clientconf.mustache similarity index 100% rename from setup/data/domain/apixpress/clientconf.mustache rename to asupsetup/data/domain/apixpress/clientconf.mustache diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/OrdersAction.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/OrdersAction.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/OrdersAction.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/OrdersAction.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/OutputsAction.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/OutputsAction.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/OutputsAction.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/OutputsAction.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/UploadFilesAction.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/UploadFilesAction.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/UploadFilesAction.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/UploadFilesAction.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/UsersAction.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/UsersAction.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/UsersAction.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/UsersAction.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/gender.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/gender.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/gender.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/gender.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/missionpos.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/missionpos.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/missionpos.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/missionpos.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/profile.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/profile.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/profile.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/profile.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/data/role.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/data/role.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/data/role.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/data/role.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/json/catalogueCompanies.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/json/catalogueCompanies.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/json/catalogueCompanies.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/json/catalogueCompanies.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/json/importcsvCompanies.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/json/importcsvCompanies.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/json/importcsvCompanies.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/json/importcsvCompanies.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/json/menuAdmin.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/json/menuAdmin.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/json/menuAdmin.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/json/menuAdmin.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/json/menuUser.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/json/menuUser.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/json/menuUser.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/json/menuUser.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/json/referentialsetting.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/json/referentialsetting.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/json/referentialsetting.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/json/referentialsetting.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/json/testref.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/json/testref.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/json/testref.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/json/testref.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/json/usersetting.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/json/usersetting.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/json/usersetting.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/json/usersetting.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/action.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/action.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/action.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/action.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/basic.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/basic.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/basic.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/basic.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/basicnolang.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/basicnolang.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/basicnolang.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/basicnolang.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/cards.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/cards.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/cards.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/cards.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/chgpsw.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/chgpsw.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/chgpsw.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/chgpsw.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/companies.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/companies.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/companies.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/companies.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/item.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/item.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/item.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/item.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/userOperator.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/userOperator.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/userOperator.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/userOperator.json diff --git a/setup/data/domain/apixpress/referentials/dataManagement/object/users.json b/asupsetup/data/domain/apixpress/referentials/dataManagement/object/users.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagement/object/users.json rename to asupsetup/data/domain/apixpress/referentials/dataManagement/object/users.json diff --git a/setup/data/domain/apixpress/referentials/dataManagementBackup/object/users.json b/asupsetup/data/domain/apixpress/referentials/dataManagementBackup/object/users.json similarity index 100% rename from setup/data/domain/apixpress/referentials/dataManagementBackup/object/users.json rename to asupsetup/data/domain/apixpress/referentials/dataManagementBackup/object/users.json diff --git a/setup/data/domain/apixpress/referentials/fr/object/users.json b/asupsetup/data/domain/apixpress/referentials/fr/object/users.json similarity index 100% rename from setup/data/domain/apixpress/referentials/fr/object/users.json rename to asupsetup/data/domain/apixpress/referentials/fr/object/users.json diff --git a/setup/data/domain/apixpress/users/searchindex/emails.json b/asupsetup/data/domain/apixpress/users/searchindex/emails.json similarity index 100% rename from setup/data/domain/apixpress/users/searchindex/emails.json rename to asupsetup/data/domain/apixpress/users/searchindex/emails.json diff --git a/setup/data/domain/apixpress/users/searchindex/logins.json b/asupsetup/data/domain/apixpress/users/searchindex/logins.json similarity index 100% rename from setup/data/domain/apixpress/users/searchindex/logins.json rename to asupsetup/data/domain/apixpress/users/searchindex/logins.json diff --git a/setup/data/domain/apixpress/users/searchindex/uids.json b/asupsetup/data/domain/apixpress/users/searchindex/uids.json similarity index 100% rename from setup/data/domain/apixpress/users/searchindex/uids.json rename to asupsetup/data/domain/apixpress/users/searchindex/uids.json diff --git a/setup/data/domain/apixpress/www/app/webapp/app_index_fr.html b/asupsetup/data/domain/apixpress/www/app/webapp/app_index_fr.html similarity index 96% rename from setup/data/domain/apixpress/www/app/webapp/app_index_fr.html rename to asupsetup/data/domain/apixpress/www/app/webapp/app_index_fr.html index 8f8dcb1..2c1f05a 100755 --- a/setup/data/domain/apixpress/www/app/webapp/app_index_fr.html +++ b/asupsetup/data/domain/apixpress/www/app/webapp/app_index_fr.html @@ -45,4 +45,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/setup/data/domain/apixpress/www/app/webapp/css/app/styles.css b/asupsetup/data/domain/apixpress/www/app/webapp/css/app/styles.css similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/css/app/styles.css rename to asupsetup/data/domain/apixpress/www/app/webapp/css/app/styles.css diff --git a/setup/data/domain/apixpress/www/app/webapp/css/fullscreen/styles.css b/asupsetup/data/domain/apixpress/www/app/webapp/css/fullscreen/styles.css similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/css/fullscreen/styles.css rename to asupsetup/data/domain/apixpress/www/app/webapp/css/fullscreen/styles.css diff --git a/setup/data/domain/apixpress/www/app/webapp/css/simplebar.min.css b/asupsetup/data/domain/apixpress/www/app/webapp/css/simplebar.min.css similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/css/simplebar.min.css rename to asupsetup/data/domain/apixpress/www/app/webapp/css/simplebar.min.css diff --git a/setup/data/domain/apixpress/www/app/webapp/fullscreen_auth_fr.html b/asupsetup/data/domain/apixpress/www/app/webapp/fullscreen_auth_fr.html similarity index 98% rename from setup/data/domain/apixpress/www/app/webapp/fullscreen_auth_fr.html rename to asupsetup/data/domain/apixpress/www/app/webapp/fullscreen_auth_fr.html index 33a9db9..fd3247c 100755 --- a/setup/data/domain/apixpress/www/app/webapp/fullscreen_auth_fr.html +++ b/asupsetup/data/domain/apixpress/www/app/webapp/fullscreen_auth_fr.html @@ -166,4 +166,4 @@ value="Trze3aze!" placeholder="Mot de passe ou hash sur clé public" /> - \ No newline at end of file + \ No newline at end of file diff --git a/setup/data/domain/apixpress/www/app/webapp/js/auth.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/auth.js similarity index 98% rename from setup/data/domain/apixpress/www/app/webapp/js/auth.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/auth.js index 1ea4364..2fb4add 100755 --- a/setup/data/domain/apixpress/www/app/webapp/js/auth.js +++ b/asupsetup/data/domain/apixpress/www/app/webapp/js/auth.js @@ -38,7 +38,7 @@ pwa.auth = {}; // Refresh browser state if exist else get pwa.state defaults //pwa.state.ready( pwa.auth.check ); -pwa.auth.check = () => { +pwa.auth.Checkjson = () => { if( pwa.state.data.login.isAuthenticated ) { if( !pwa.auth.isAuthenticate() ) { // Then reinit local storage and refresh page @@ -161,8 +161,8 @@ pwa.auth.login = async function () { PASSWORD: document.querySelector( "#signin input[name='password']" ) .value } - console.log( 'check password', checkdata.test.password( "", data.PASSWORD ) ) - if( data.LOGIN.length < 4 || !checkdata.test.password( "", data.PASSWORD ) ) { + console.log( 'check password', Checkjson.test.password( "", data.PASSWORD ) ) + if( data.LOGIN.length < 4 || !Checkjson.test.password( "", data.PASSWORD ) ) { /*$("#loginpart p.msginfo") .html("") .fadeOut(2000)*/ diff --git a/setup/data/domain/apixpress/www/app/webapp/js/axios.min.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/axios.min.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/axios.min.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/axios.min.js diff --git a/setup/data/domain/apixpress/www/app/webapp/js/bootstrap.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/bootstrap.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/bootstrap.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/bootstrap.js diff --git a/setup/data/domain/apixpress/www/app/webapp/js/checkdata.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/checkdata.js similarity index 68% rename from setup/data/domain/apixpress/www/app/webapp/js/checkdata.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/checkdata.js index 11e99ec..4deca02 100755 --- a/setup/data/domain/apixpress/www/app/webapp/js/checkdata.js +++ b/asupsetup/data/domain/apixpress/www/app/webapp/js/checkdata.js @@ -3,18 +3,18 @@ This module have to be independant of any external package it is shared between back and front and is usefull to apply common check in front before sending it in back can be include in project with - -or with const checkdata = require('../public/js/checkdata.js') + +or with const Checkjson = require('../public/js/Checkjson.js') */ // --## -const checkdata = {}; -// each checkdata.test. return true or false -checkdata.test = {}; +const Checkjson = {}; +// each Checkjson.test. return true or false +Checkjson.test = {}; -checkdata.test.emailadress = ( ctx, email ) => { +Checkjson.test.emailadress = ( ctx, email ) => { const regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return regExp.test( email ); }; @@ -22,13 +22,13 @@ checkdata.test.emailadress = ( ctx, email ) => { * @emaillist = "email1,email2, email3" * it check if each eamil separate by , are correct */ -checkdata.test.emailadresslist = ( ctx, emaillist ) => { +Checkjson.test.emailadresslist = ( ctx, emaillist ) => { //console.log(emaillist.split(',')) if( emaillist.length > 0 ) { const emails = emaillist.split( ',' ); for( var i in emails ) { //console.log(emails[i]) - if( !checkdata.test.emailadress( "", emails[ i ].trim() ) ) { + if( !Checkjson.test.emailadress( "", emails[ i ].trim() ) ) { return false } } @@ -36,19 +36,19 @@ checkdata.test.emailadresslist = ( ctx, emaillist ) => { return true; }; -checkdata.test.password = ( ctx, pwd ) => { +Checkjson.test.password = ( ctx, pwd ) => { const regExp = new RegExp( /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.{}:|\s]{8,}/ ); return regExp.test( pwd ); }; -checkdata.test.required = ( ctx, val ) => +Checkjson.test.required = ( ctx, val ) => val != null && val != 'undefined' && val.length > 0; -checkdata.test.isNumber = ( ctx, n ) => typeof n === 'number'; -checkdata.test.isInt = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) == n; -checkdata.test.isFloat = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) != n; -checkdata.test.unique = ( ctx, val ) => { +Checkjson.test.isNumber = ( ctx, n ) => typeof n === 'number'; +Checkjson.test.isInt = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) == n; +Checkjson.test.isFloat = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) != n; +Checkjson.test.unique = ( ctx, val ) => { if( ctx.list[ ctx.currentfield ] ) { return !ctx.list[ ctx.currentfield ].includes( val ); } else { @@ -56,13 +56,13 @@ checkdata.test.unique = ( ctx, val ) => { return false; } }; -checkdata.test.isDateDay = ( ctx, dateDay ) => true; -/* checkdata.test.filterInvalidInArray = (array, validate) => +Checkjson.test.isDateDay = ( ctx, dateDay ) => true; +/* Checkjson.test.filterInvalidInArray = (array, validate) => array ? array.filter(el => !validate(el)) : true; // return true when every elements is valid */ -checkdata.test.postalCode = ( ctx, postalCode ) => { +Checkjson.test.postalCode = ( ctx, postalCode ) => { if( postalCode.length == 0 ) return true; const regExp = new RegExp( /(^\d{5}$)|(^\d{5}-\d{4}$)/ ); return regExp.test( postalCode ); @@ -70,7 +70,7 @@ checkdata.test.postalCode = ( ctx, postalCode ) => { /** * PHONE */ -checkdata.test.phoneNumber = ( ctx, phoneNumber ) => { +Checkjson.test.phoneNumber = ( ctx, phoneNumber ) => { if( phoneNumber.length == 0 ) return true; phoneNumber = phoneNumber.trim() .replace( /[- .]/g, '' ) @@ -83,13 +83,13 @@ checkdata.test.phoneNumber = ( ctx, phoneNumber ) => { * @phonelist = "phone1,phone2,phone3" * it check if each phone separate by , are correct */ -checkdata.test.phoneNumberlist = ( ctx, phonelist ) => { +Checkjson.test.phoneNumberlist = ( ctx, phonelist ) => { //console.log(emaillist.split(',')) if( phonelist.length > 0 ) { const phones = phonelist.split( ',' ); for( var i in phones ) { //console.log(emails[i]) - if( !checkdata.test.phoneNumber( "", phones[ i ].trim() ) ) { + if( !Checkjson.test.phoneNumber( "", phones[ i ].trim() ) ) { return false } } @@ -97,29 +97,29 @@ checkdata.test.phoneNumberlist = ( ctx, phonelist ) => { return true; }; -// checkdata.normalize take a correct data then reformat it to harmonise it -checkdata.normalize = {}; -checkdata.normalize.phoneNumber = ( ctx, phone ) => { +// Checkjson.normalize take a correct data then reformat it to harmonise it +Checkjson.normalize = {}; +Checkjson.normalize.phoneNumber = ( ctx, phone ) => { phone = phone.trim() .replace( /[- .]/g, '' ); - if( checkdata.test.phoneNumber( '', phone ) && phone.length == 10 && phone[ 0 ] == "0" ) { + if( Checkjson.test.phoneNumber( '', phone ) && phone.length == 10 && phone[ 0 ] == "0" ) { phone = '+33 ' + phone.substring( 1 ); } return phone; } -checkdata.normalize.upperCase = ( ctx, txt ) => txt.toUpperCase(); -checkdata.normalize.lowerCase = ( ctx, txt ) => txt.toLowerCase(); +Checkjson.normalize.upperCase = ( ctx, txt ) => txt.toUpperCase(); +Checkjson.normalize.lowerCase = ( ctx, txt ) => txt.toLowerCase(); // fixe 10 position et complete par des 0 devant -checkdata.normalize.zfill10 = ( ctx, num ) => { +Checkjson.normalize.zfill10 = ( ctx, num ) => { let s = num + ''; while( s.length < 10 ) s = '0' + s; return s; }; /*let tt = "+33 1 02.03 04 05"; -console.log(checkdata.test.phoneNumber('', tt)) -console.log(checkdata.normalize.phoneNumber('', tt)) +console.log(Checkjson.test.phoneNumber('', tt)) +console.log(Checkjson.normalize.phoneNumber('', tt)) */ -checkdata.evaluate = ( contexte, referential, data ) => { +Checkjson.evaluate = ( contexte, referential, data ) => { /* * contexte object {} with full info for evaluation * file referential path to get object to apply @@ -148,13 +148,13 @@ checkdata.evaluate = ( contexte, referential, data ) => { } else { if( objectdef[ field ].check ) { // check data with rule list in check - objectdef[ field ].check.forEach( ctrl => { + objectdef[ field ].Checkjson.forEach( ctrl => { console.log( 'ctrl', ctrl ); contexte.currentfield = field; - if( !checkdata.test[ ctrl ] ) { + if( !Checkjson.test[ ctrl ] ) { invalidefor.push( 'ERR check function does not exist :' + ctrl + '___' + field ) } else { - if( !checkdata.test[ ctrl ]( contexte, data[ field ] ) ) + if( !Checkjson.test[ ctrl ]( contexte, data[ field ] ) ) invalidefor.push( 'ERR' + ctrl + '___' + field ); } } ); @@ -181,4 +181,4 @@ checkdata.evaluate = ( contexte, referential, data ) => { }; }; -if( typeof module !== 'undefined' ) module.exports = checkdata; +if( typeof module !== 'undefined' ) module.exports = Checkjson; diff --git a/setup/data/domain/apixpress/www/app/webapp/js/feather.min.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/feather.min.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/feather.min.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/feather.min.js diff --git a/setup/data/domain/apixpress/www/app/webapp/js/main.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/main.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/main.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/main.js diff --git a/setup/data/domain/apixpress/www/app/webapp/js/mustache.min.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/mustache.min.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/mustache.min.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/mustache.min.js diff --git a/setup/data/domain/apixpress/www/app/webapp/js/notification.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/notification.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/notification.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/notification.js diff --git a/setup/data/domain/apixpress/www/app/webapp/js/simplebar.min.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/simplebar.min.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/simplebar.min.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/simplebar.min.js diff --git a/setup/data/domain/apixpress/www/app/webapp/js/state.js b/asupsetup/data/domain/apixpress/www/app/webapp/js/state.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/js/state.js rename to asupsetup/data/domain/apixpress/www/app/webapp/js/state.js diff --git a/setup/data/domain/apixpress/www/app/webapp/manifest.json b/asupsetup/data/domain/apixpress/www/app/webapp/manifest.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/manifest.json rename to asupsetup/data/domain/apixpress/www/app/webapp/manifest.json diff --git a/setup/data/domain/apixpress/www/app/webapp/scss/main.scss b/asupsetup/data/domain/apixpress/www/app/webapp/scss/main.scss similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/scss/main.scss rename to asupsetup/data/domain/apixpress/www/app/webapp/scss/main.scss diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpress.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpress.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpress.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpress.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressactivity.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressactivity.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressactivity.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressactivity.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressclientId.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressclientId.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressclientId.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpressclientId.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpresssysinfo.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpresssysinfo.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpresssysinfo.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/adminapixpresssysinfo.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/sidebaradminapixpress_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/sidebaradminapixpress_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/sidebaradminapixpress_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/adminapixpress/sidebaradminapixpress_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPPdata_sidebarAdminapixpress_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPPdata_sidebarAdminapixpress_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPPdata_sidebarAdminapixpress_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPPdata_sidebarAdminapixpress_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPappmesa.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPappmesa.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPappmesa.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/ASUPappmesa.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appcontent.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appcontent.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appcontent.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appcontent.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appmesa.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appmesa.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appmesa.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appmesa.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appsidebarmenu.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appsidebarmenu.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appsidebarmenu.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/appsidebarmenu.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmenu.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmenu.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmenu.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmenu.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmessage.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmessage.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmessage.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarmessage.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarnotification.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarnotification.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarnotification.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/apptopbarnotification.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_appmesa_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_appmesa_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_appmesa_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_appmesa_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebarAdminspace_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebarAdminspace_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebarAdminspace_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebarAdminspace_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebar_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebar_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebar_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_sidebar_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_topbar_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_topbar_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_topbar_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/data_topbar_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/message.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/message.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/message.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/message.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/referential.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/reporting.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/reporting.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/reporting.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/reporting.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/search.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/search.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/search.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/search.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/tuto.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/tuto.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/tuto.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/tuto.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/userManager.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/userManager.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appmesa/userManager.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appmesa/userManager.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appusers/useractivity.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/useractivity.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appusers/useractivity.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/useractivity.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingaccounttpl.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingaccounttpl.mustache similarity index 93% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingaccounttpl.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingaccounttpl.mustache index 412f255..8078be3 100755 --- a/setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingaccounttpl.mustache +++ b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingaccounttpl.mustache @@ -89,11 +89,11 @@
{{{meta.users.PSEUDO.html}}}
-
diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingdeletetpl.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingdeletetpl.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingdeletetpl.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingdeletetpl.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingpasswordtpl.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingpasswordtpl.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingpasswordtpl.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingpasswordtpl.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingprivacytpl.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingprivacytpl.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingprivacytpl.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/appusers/usersettingprivacytpl.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/flipbox.zip b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox.zip similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/flipbox.zip rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox.zip diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/data_flipbox_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/data_flipbox_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/data_flipbox_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/data_flipbox_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.scss b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.scss similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.scss rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/flipbox/flipbox.scss diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/fullpage/fullpage.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/fullpage/fullpage.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/fullpage/fullpage.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/fullpage/fullpage.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/notification/data_notiflist_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/notification/data_notiflist_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/notification/data_notiflist_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/notification/data_notiflist_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/notification/notification.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/notification/notification.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/notification/notification.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/notification/notification.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/notification/notiflist.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/notification/notiflist.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/notification/notiflist.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/notification/notiflist.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserLogout_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserLogout_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserLogout_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserLogout_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruseractivity_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruseractivity_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruseractivity_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruseractivity_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserprofile_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserprofile_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserprofile_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/topbaruserprofile_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/useractivity.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/useractivity.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/useractivity.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/useractivity.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/userprofile.js b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/userprofile.js similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/userprofile.js rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/userprofile.js diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingaccount.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingaccount.mustache similarity index 93% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingaccount.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingaccount.mustache index 412f255..8078be3 100755 --- a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingaccount.mustache +++ b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingaccount.mustache @@ -89,11 +89,11 @@
{{{meta.users.PSEUDO.html}}}
-
diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingdeletetpl.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingdeletetpl.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingdeletetpl.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingdeletetpl.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingpasswordtpl.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingpasswordtpl.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingpasswordtpl.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingpasswordtpl.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingprivacytpl.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingprivacytpl.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingprivacytpl.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/userprofile/usersettingprivacytpl.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/data_verticaltab_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/data_verticaltab_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/data_verticaltab_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/data_verticaltab_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/verticaltab.mustache b/asupsetup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/verticaltab.mustache similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/verticaltab.mustache rename to asupsetup/data/domain/apixpress/www/app/webapp/static/components/verticaltab/verticaltab.mustache diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/appmesa_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/appmesa_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/appmesa_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/appmesa_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/appsimplehead_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/appsimplehead_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/appsimplehead_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/appsimplehead_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/auth_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/auth_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/auth_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/auth_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/fullpage.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/fullpage.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/fullpage.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/fullpage.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/fullscreensimplehead_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/fullscreensimplehead_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/fullscreensimplehead_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/fullscreensimplehead_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/notiflist_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/notiflist_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/notiflist_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/notiflist_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminapixpress_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminapixpress_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminapixpress_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminapixpress_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminspace_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminspace_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminspace_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/sidebarAdminspace_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/sidebar_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/sidebar_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/sidebar_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/sidebar_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/topbarUserprofile_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/topbarUserprofile_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/topbarUserprofile_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/topbarUserprofile_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/data/topbar_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/data/topbar_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/data/topbar_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/data/topbar_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/demo.html b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/demo.html similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/demo.html rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/demo.html diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.eot b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.eot similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.eot rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.eot diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.svg b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.svg similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.svg rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.svg diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.ttf b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.ttf similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.ttf rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.ttf diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff2 b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff2 similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff2 rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/fonts/icofont.woff2 diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.css b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.css similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.css rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.css diff --git a/setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.min.css b/asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.min.css similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.min.css rename to asupsetup/data/domain/apixpress/www/app/webapp/static/fonts/icofont/icofont.min.css diff --git a/nationchains/static/img/avataranonymous.png b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous.png similarity index 100% rename from nationchains/static/img/avataranonymous.png rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous.png diff --git a/nationchains/static/img/avataranonymous1.png b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous1.png similarity index 100% rename from nationchains/static/img/avataranonymous1.png rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous1.png diff --git a/nationchains/static/img/avataranonymous2.png b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous2.png similarity index 100% rename from nationchains/static/img/avataranonymous2.png rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous2.png diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/icons/iconX74x74.png b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/icons/iconX74x74.png similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/icons/iconX74x74.png rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/icons/iconX74x74.png diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/logo/apixpress.png b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo/apixpress.png similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/logo/apixpress.png rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo/apixpress.png diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/logo/ndda.png b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo/ndda.png similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/logo/ndda.png rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo/ndda.png diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/logo_footer.svg b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo_footer.svg similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/logo_footer.svg rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo_footer.svg diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/logo_menu.svg b/asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo_menu.svg similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/logo_menu.svg rename to asupsetup/data/domain/apixpress/www/app/webapp/static/img/logo_menu.svg diff --git a/setup/data/domain/apixpress/www/app/webapp/static/lastchange/app_index_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/lastchange/app_index_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/lastchange/app_index_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/lastchange/app_index_fr.json diff --git a/setup/data/domain/apixpress/www/app/webapp/static/lastchange/fullscreen_auth_fr.json b/asupsetup/data/domain/apixpress/www/app/webapp/static/lastchange/fullscreen_auth_fr.json similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/lastchange/fullscreen_auth_fr.json rename to asupsetup/data/domain/apixpress/www/app/webapp/static/lastchange/fullscreen_auth_fr.json diff --git a/setup/data/domain/apixpress/www/app/www.apixpress.org/apixpress.png b/asupsetup/data/domain/apixpress/www/app/www.apixpress.org/apixpress.png similarity index 100% rename from setup/data/domain/apixpress/www/app/www.apixpress.org/apixpress.png rename to asupsetup/data/domain/apixpress/www/app/www.apixpress.org/apixpress.png diff --git a/nationchains/static/img/chartegraphique/codecouleur.png b/asupsetup/data/domain/apixpress/www/cdn/chartegraphique/codecouleur.png similarity index 100% rename from nationchains/static/img/chartegraphique/codecouleur.png rename to asupsetup/data/domain/apixpress/www/cdn/chartegraphique/codecouleur.png diff --git a/nationchains/static/img/chartegraphique/favicon.png b/asupsetup/data/domain/apixpress/www/cdn/chartegraphique/favicon.png similarity index 100% rename from nationchains/static/img/chartegraphique/favicon.png rename to asupsetup/data/domain/apixpress/www/cdn/chartegraphique/favicon.png diff --git a/setup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgplein.png b/asupsetup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgplein.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgplein.png rename to asupsetup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgplein.png diff --git a/setup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgtransparent.png b/asupsetup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgtransparent.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgtransparent.png rename to asupsetup/data/domain/apixpress/www/cdn/chartegraphique/logo_bgtransparent.png diff --git a/setup/data/domain/apixpress/www/cdn/chartegraphique/logocarre_bgplein.png b/asupsetup/data/domain/apixpress/www/cdn/chartegraphique/logocarre_bgplein.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/chartegraphique/logocarre_bgplein.png rename to asupsetup/data/domain/apixpress/www/cdn/chartegraphique/logocarre_bgplein.png diff --git a/setup/data/domain/apixpress/www/cdn/chartegraphique/planchelogo.svg b/asupsetup/data/domain/apixpress/www/cdn/chartegraphique/planchelogo.svg similarity index 100% rename from setup/data/domain/apixpress/www/cdn/chartegraphique/planchelogo.svg rename to asupsetup/data/domain/apixpress/www/cdn/chartegraphique/planchelogo.svg diff --git a/setup/data/domain/apixpress/www/cdn/doc/.apiXpress.png b/asupsetup/data/domain/apixpress/www/cdn/doc/.apiXpress.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/doc/.apiXpress.png rename to asupsetup/data/domain/apixpress/www/cdn/doc/.apiXpress.png diff --git a/setup/data/domain/apixpress/www/cdn/doc/apiXpress.mm b/asupsetup/data/domain/apixpress/www/cdn/doc/apiXpress.mm similarity index 100% rename from setup/data/domain/apixpress/www/cdn/doc/apiXpress.mm rename to asupsetup/data/domain/apixpress/www/cdn/doc/apiXpress.mm diff --git a/nationchains/static/fonts/Cantarell-Bold.ttf b/asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-Bold.ttf similarity index 100% rename from nationchains/static/fonts/Cantarell-Bold.ttf rename to asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-Bold.ttf diff --git a/nationchains/static/fonts/Cantarell-BoldItalic.ttf b/asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-BoldItalic.ttf similarity index 100% rename from nationchains/static/fonts/Cantarell-BoldItalic.ttf rename to asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-BoldItalic.ttf diff --git a/nationchains/static/fonts/Cantarell-Italic.ttf b/asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-Italic.ttf similarity index 100% rename from nationchains/static/fonts/Cantarell-Italic.ttf rename to asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-Italic.ttf diff --git a/nationchains/static/fonts/Cantarell-Regular.ttf b/asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-Regular.ttf similarity index 100% rename from nationchains/static/fonts/Cantarell-Regular.ttf rename to asupsetup/data/domain/apixpress/www/cdn/fonts/Cantarell-Regular.ttf diff --git a/nationchains/static/fonts/OFL.txt b/asupsetup/data/domain/apixpress/www/cdn/fonts/OFL.txt similarity index 100% rename from nationchains/static/fonts/OFL.txt rename to asupsetup/data/domain/apixpress/www/cdn/fonts/OFL.txt diff --git a/nationchains/static/fonts/cantarell-bold-demo.html b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bold-demo.html similarity index 100% rename from nationchains/static/fonts/cantarell-bold-demo.html rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bold-demo.html diff --git a/nationchains/static/fonts/cantarell-bold-webfont.woff b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bold-webfont.woff similarity index 100% rename from nationchains/static/fonts/cantarell-bold-webfont.woff rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bold-webfont.woff diff --git a/nationchains/static/fonts/cantarell-bold-webfont.woff2 b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bold-webfont.woff2 similarity index 100% rename from nationchains/static/fonts/cantarell-bold-webfont.woff2 rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bold-webfont.woff2 diff --git a/nationchains/static/fonts/cantarell-bolditalic-demo.html b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bolditalic-demo.html similarity index 100% rename from nationchains/static/fonts/cantarell-bolditalic-demo.html rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bolditalic-demo.html diff --git a/nationchains/static/fonts/cantarell-bolditalic-webfont.woff b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bolditalic-webfont.woff similarity index 100% rename from nationchains/static/fonts/cantarell-bolditalic-webfont.woff rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bolditalic-webfont.woff diff --git a/nationchains/static/fonts/cantarell-bolditalic-webfont.woff2 b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bolditalic-webfont.woff2 similarity index 100% rename from nationchains/static/fonts/cantarell-bolditalic-webfont.woff2 rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-bolditalic-webfont.woff2 diff --git a/nationchains/static/fonts/cantarell-italic-demo.html b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-italic-demo.html similarity index 100% rename from nationchains/static/fonts/cantarell-italic-demo.html rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-italic-demo.html diff --git a/nationchains/static/fonts/cantarell-italic-webfont.woff b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-italic-webfont.woff similarity index 100% rename from nationchains/static/fonts/cantarell-italic-webfont.woff rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-italic-webfont.woff diff --git a/nationchains/static/fonts/cantarell-italic-webfont.woff2 b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-italic-webfont.woff2 similarity index 100% rename from nationchains/static/fonts/cantarell-italic-webfont.woff2 rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-italic-webfont.woff2 diff --git a/nationchains/static/fonts/cantarell-regular-demo.html b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-regular-demo.html similarity index 100% rename from nationchains/static/fonts/cantarell-regular-demo.html rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-regular-demo.html diff --git a/nationchains/static/fonts/cantarell-regular-webfont.woff b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-regular-webfont.woff similarity index 100% rename from nationchains/static/fonts/cantarell-regular-webfont.woff rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-regular-webfont.woff diff --git a/nationchains/static/fonts/cantarell-regular-webfont.woff2 b/asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-regular-webfont.woff2 similarity index 100% rename from nationchains/static/fonts/cantarell-regular-webfont.woff2 rename to asupsetup/data/domain/apixpress/www/cdn/fonts/cantarell-regular-webfont.woff2 diff --git a/nationchains/static/fonts/generator_config.txt b/asupsetup/data/domain/apixpress/www/cdn/fonts/generator_config.txt similarity index 100% rename from nationchains/static/fonts/generator_config.txt rename to asupsetup/data/domain/apixpress/www/cdn/fonts/generator_config.txt diff --git a/nationchains/static/fonts/specimen_files/grid_12-825-55-15.css b/asupsetup/data/domain/apixpress/www/cdn/fonts/specimen_files/grid_12-825-55-15.css similarity index 100% rename from nationchains/static/fonts/specimen_files/grid_12-825-55-15.css rename to asupsetup/data/domain/apixpress/www/cdn/fonts/specimen_files/grid_12-825-55-15.css diff --git a/nationchains/static/fonts/specimen_files/specimen_stylesheet.css b/asupsetup/data/domain/apixpress/www/cdn/fonts/specimen_files/specimen_stylesheet.css similarity index 100% rename from nationchains/static/fonts/specimen_files/specimen_stylesheet.css rename to asupsetup/data/domain/apixpress/www/cdn/fonts/specimen_files/specimen_stylesheet.css diff --git a/nationchains/static/fonts/stylesheet.css b/asupsetup/data/domain/apixpress/www/cdn/fonts/stylesheet.css similarity index 100% rename from nationchains/static/fonts/stylesheet.css rename to asupsetup/data/domain/apixpress/www/cdn/fonts/stylesheet.css diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous.png b/asupsetup/data/domain/apixpress/www/cdn/img/avataranonymous.png similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous.png rename to asupsetup/data/domain/apixpress/www/cdn/img/avataranonymous.png diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous1.png b/asupsetup/data/domain/apixpress/www/cdn/img/avataranonymous1.png similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous1.png rename to asupsetup/data/domain/apixpress/www/cdn/img/avataranonymous1.png diff --git a/setup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous2.png b/asupsetup/data/domain/apixpress/www/cdn/img/avataranonymous2.png similarity index 100% rename from setup/data/domain/apixpress/www/app/webapp/static/img/avataranonymous2.png rename to asupsetup/data/domain/apixpress/www/cdn/img/avataranonymous2.png diff --git a/setup/data/domain/apixpress/www/cdn/img/icons/iconX74x74.png b/asupsetup/data/domain/apixpress/www/cdn/img/icons/iconX74x74.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/img/icons/iconX74x74.png rename to asupsetup/data/domain/apixpress/www/cdn/img/icons/iconX74x74.png diff --git a/setup/data/domain/apixpress/www/cdn/img/logo/apixpress.png b/asupsetup/data/domain/apixpress/www/cdn/img/logo/apixpress.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/img/logo/apixpress.png rename to asupsetup/data/domain/apixpress/www/cdn/img/logo/apixpress.png diff --git a/setup/data/domain/apixpress/www/cdn/img/logo/ndda.png b/asupsetup/data/domain/apixpress/www/cdn/img/logo/ndda.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/img/logo/ndda.png rename to asupsetup/data/domain/apixpress/www/cdn/img/logo/ndda.png diff --git a/setup/data/domain/apixpress/www/cdn/img/logo_footer.svg b/asupsetup/data/domain/apixpress/www/cdn/img/logo_footer.svg similarity index 100% rename from setup/data/domain/apixpress/www/cdn/img/logo_footer.svg rename to asupsetup/data/domain/apixpress/www/cdn/img/logo_footer.svg diff --git a/setup/data/domain/apixpress/www/cdn/img/logo_menu.svg b/asupsetup/data/domain/apixpress/www/cdn/img/logo_menu.svg similarity index 100% rename from setup/data/domain/apixpress/www/cdn/img/logo_menu.svg rename to asupsetup/data/domain/apixpress/www/cdn/img/logo_menu.svg diff --git a/setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/1BxJM6AnOfFcwl_vSXkN9Fu2YH4RBIMRJakt-OhuA0k b/asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/1BxJM6AnOfFcwl_vSXkN9Fu2YH4RBIMRJakt-OhuA0k similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/1BxJM6AnOfFcwl_vSXkN9Fu2YH4RBIMRJakt-OhuA0k rename to asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/1BxJM6AnOfFcwl_vSXkN9Fu2YH4RBIMRJakt-OhuA0k diff --git a/setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/I-uQGmAgy6bWggASoIYoo2_O9BO-Pu6vrQpSIHJY7Ow b/asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/I-uQGmAgy6bWggASoIYoo2_O9BO-Pu6vrQpSIHJY7Ow similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/I-uQGmAgy6bWggASoIYoo2_O9BO-Pu6vrQpSIHJY7Ow rename to asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/I-uQGmAgy6bWggASoIYoo2_O9BO-Pu6vrQpSIHJY7Ow diff --git a/setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/JdBJU5yetxUAhmxmzyKCdjhAkGAaL_oKY4ME_mxBN6I b/asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/JdBJU5yetxUAhmxmzyKCdjhAkGAaL_oKY4ME_mxBN6I similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/JdBJU5yetxUAhmxmzyKCdjhAkGAaL_oKY4ME_mxBN6I rename to asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/JdBJU5yetxUAhmxmzyKCdjhAkGAaL_oKY4ME_mxBN6I diff --git a/setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/SiSMi5lKG4u4wTljv3Ryr4rEKwNQyK--ExV3hZT5jgs b/asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/SiSMi5lKG4u4wTljv3Ryr4rEKwNQyK--ExV3hZT5jgs similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/SiSMi5lKG4u4wTljv3Ryr4rEKwNQyK--ExV3hZT5jgs rename to asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/SiSMi5lKG4u4wTljv3Ryr4rEKwNQyK--ExV3hZT5jgs diff --git a/setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/test.html b/asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/test.html similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/test.html rename to asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/test.html diff --git a/setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/vRy8dNfRqdZ1kBLpdO6URuCQyF7If1_MFxLoWXzuOX0 b/asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/vRy8dNfRqdZ1kBLpdO6URuCQyF7If1_MFxLoWXzuOX0 similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/vRy8dNfRqdZ1kBLpdO6URuCQyF7If1_MFxLoWXzuOX0 rename to asupsetup/data/domain/apixpress/www/cdn/public/.well-known/acme-challenge/vRy8dNfRqdZ1kBLpdO6URuCQyF7If1_MFxLoWXzuOX0 diff --git a/setup/data/domain/apixpress/www/cdn/public/basketunknown.png b/asupsetup/data/domain/apixpress/www/cdn/public/basketunknown.png similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/basketunknown.png rename to asupsetup/data/domain/apixpress/www/cdn/public/basketunknown.png diff --git a/nationchains/static/img/imgtg.png b/asupsetup/data/domain/apixpress/www/cdn/public/imgtg.png similarity index 100% rename from nationchains/static/img/imgtg.png rename to asupsetup/data/domain/apixpress/www/cdn/public/imgtg.png diff --git a/setup/data/domain/apixpress/www/cdn/public/index.html b/asupsetup/data/domain/apixpress/www/cdn/public/index.html similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/index.html rename to asupsetup/data/domain/apixpress/www/cdn/public/index.html diff --git a/setup/data/domain/apixpress/www/cdn/public/js/article.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/article.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/article.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/article.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/auth.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/auth.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/auth.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/auth.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/axios.min.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/axios.min.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/axios.min.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/axios.min.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/checkdata.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/checkdata.js similarity index 69% rename from setup/data/domain/apixpress/www/cdn/public/js/checkdata.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/checkdata.js index e9822d4..13d25e6 100755 --- a/setup/data/domain/apixpress/www/cdn/public/js/checkdata.js +++ b/asupsetup/data/domain/apixpress/www/cdn/public/js/checkdata.js @@ -3,18 +3,18 @@ This module have to be independant of any external package it is shared between back and front and is usefull to apply common check in front before sending it in back can be include in project with - -or with const checkdata = require('../public/js/checkdata.js') + +or with const Checkjson = require('../public/js/Checkjson.js') */ // --## -const checkdata = {}; -// each checkdata.test. return true or false -checkdata.test = {}; +const Checkjson = {}; +// each Checkjson.test. return true or false +Checkjson.test = {}; -checkdata.test.emailadress = ( ctx, email ) => { +Checkjson.test.emailadress = ( ctx, email ) => { const regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return regExp.test( email ); }; @@ -22,13 +22,13 @@ checkdata.test.emailadress = ( ctx, email ) => { * @emaillist = "email1,email2, email3" * it check if each eamil separate by , are correct */ -checkdata.test.emailadresslist = ( ctx, emaillist ) => { +Checkjson.test.emailadresslist = ( ctx, emaillist ) => { //console.log(emaillist.split(',')) if( emaillist.length > 0 ) { const emails = emaillist.split( ',' ); for( var i in emails ) { //console.log(emails[i]) - if( !checkdata.test.emailadress( "", emails[ i ].trim() ) ) { + if( !Checkjson.test.emailadress( "", emails[ i ].trim() ) ) { return false } } @@ -36,20 +36,20 @@ checkdata.test.emailadresslist = ( ctx, emaillist ) => { return true; }; -checkdata.test.password = ( ctx, pwd ) => { +Checkjson.test.password = ( ctx, pwd ) => { const regExp = new RegExp( /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.{}:|\s]{8,}/ ); return regExp.test( pwd ); }; -checkdata.test.required = ( ctx, val ) => +Checkjson.test.required = ( ctx, val ) => ( val != null && val != 'undefined' && val.length > 0 ) || ( !!val && val.constructor === Array && val.length > 0 ) || ( !!val && val.constructor === Object && Object.keys( val ) .length > 0 ); -checkdata.test.isNumber = ( ctx, n ) => typeof n === 'number'; -checkdata.test.isInt = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) == n; -checkdata.test.isFloat = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) != n; -checkdata.test.unique = ( ctx, val ) => { +Checkjson.test.isNumber = ( ctx, n ) => typeof n === 'number'; +Checkjson.test.isInt = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) == n; +Checkjson.test.isFloat = ( ctx, n ) => n != '' && !isNaN( n ) && Math.round( n ) != n; +Checkjson.test.unique = ( ctx, val ) => { if( ctx.list[ ctx.currentfield ] ) { return !ctx.list[ ctx.currentfield ].includes( val ); } else { @@ -57,13 +57,13 @@ checkdata.test.unique = ( ctx, val ) => { return false; } }; -checkdata.test.isDateDay = ( ctx, dateDay ) => true; -/* checkdata.test.filterInvalidInArray = (array, validate) => +Checkjson.test.isDateDay = ( ctx, dateDay ) => true; +/* Checkjson.test.filterInvalidInArray = (array, validate) => array ? array.filter(el => !validate(el)) : true; // return true when every elements is valid */ -checkdata.test.postalCode = ( ctx, postalCode ) => { +Checkjson.test.postalCode = ( ctx, postalCode ) => { if( postalCode.length == 0 ) return true; const regExp = new RegExp( /(^\d{5}$)|(^\d{5}-\d{4}$)/ ); return regExp.test( postalCode ); @@ -71,7 +71,7 @@ checkdata.test.postalCode = ( ctx, postalCode ) => { /** * PHONE */ -checkdata.test.phoneNumber = ( ctx, phoneNumber ) => { +Checkjson.test.phoneNumber = ( ctx, phoneNumber ) => { if( phoneNumber.length == 0 ) return true; phoneNumber = phoneNumber.trim() .replace( /[- .]/g, '' ) @@ -84,13 +84,13 @@ checkdata.test.phoneNumber = ( ctx, phoneNumber ) => { * @phonelist = "phone1,phone2,phone3" * it check if each phone separate by , are correct */ -checkdata.test.phoneNumberlist = ( ctx, phonelist ) => { +Checkjson.test.phoneNumberlist = ( ctx, phonelist ) => { //console.log(emaillist.split(',')) if( phonelist.length > 0 ) { const phones = phonelist.split( ',' ); for( var i in phones ) { //console.log(emails[i]) - if( !checkdata.test.phoneNumber( "", phones[ i ].trim() ) ) { + if( !Checkjson.test.phoneNumber( "", phones[ i ].trim() ) ) { return false } } @@ -98,29 +98,29 @@ checkdata.test.phoneNumberlist = ( ctx, phonelist ) => { return true; }; -// checkdata.normalize take a correct data then reformat it to harmonise it -checkdata.normalize = {}; -checkdata.normalize.phoneNumber = ( ctx, phone ) => { +// Checkjson.normalize take a correct data then reformat it to harmonise it +Checkjson.normalize = {}; +Checkjson.normalize.phoneNumber = ( ctx, phone ) => { phone = phone.trim() .replace( /[- .]/g, '' ); - if( checkdata.test.phoneNumber( '', phone ) && phone.length == 10 && phone[ 0 ] == "0" ) { + if( Checkjson.test.phoneNumber( '', phone ) && phone.length == 10 && phone[ 0 ] == "0" ) { phone = '+33 ' + phone.substring( 1 ); } return phone; } -checkdata.normalize.upperCase = ( ctx, txt ) => txt.toUpperCase(); -checkdata.normalize.lowerCase = ( ctx, txt ) => txt.toLowerCase(); +Checkjson.normalize.upperCase = ( ctx, txt ) => txt.toUpperCase(); +Checkjson.normalize.lowerCase = ( ctx, txt ) => txt.toLowerCase(); // fixe 10 position et complete par des 0 devant -checkdata.normalize.zfill10 = ( ctx, num ) => { +Checkjson.normalize.zfill10 = ( ctx, num ) => { let s = num + ''; while( s.length < 10 ) s = '0' + s; return s; }; /*let tt = "+33 1 02.03 04 05"; -console.log(checkdata.test.phoneNumber('', tt)) -console.log(checkdata.normalize.phoneNumber('', tt)) +console.log(Checkjson.test.phoneNumber('', tt)) +console.log(Checkjson.normalize.phoneNumber('', tt)) */ -checkdata.evaluate = ( contexte, referential, data ) => { +Checkjson.evaluate = ( contexte, referential, data ) => { /* * contexte object {} with full info for evaluation * file referential path to get object to apply @@ -149,13 +149,13 @@ checkdata.evaluate = ( contexte, referential, data ) => { } else { if( objectdef[ field ].check ) { // check data with rule list in check - objectdef[ field ].check.forEach( ctrl => { + objectdef[ field ].Checkjson.forEach( ctrl => { console.log( 'ctrl', ctrl ); contexte.currentfield = field; - if( !checkdata.test[ ctrl ] ) { + if( !Checkjson.test[ ctrl ] ) { invalidefor.push( 'ERR check function does not exist :' + ctrl + '___' + field ) } else { - if( !checkdata.test[ ctrl ]( contexte, data[ field ] ) ) + if( !Checkjson.test[ ctrl ]( contexte, data[ field ] ) ) invalidefor.push( 'ERR' + ctrl + '___' + field ); } } ); @@ -182,4 +182,4 @@ checkdata.evaluate = ( contexte, referential, data ) => { }; }; -if( typeof module !== 'undefined' ) module.exports = checkdata; +if( typeof module !== 'undefined' ) module.exports = Checkjson; diff --git a/setup/data/domain/apixpress/www/cdn/public/js/editor.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/editor.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/editor.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/editor.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/editorsave.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/editorsave.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/editorsave.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/editorsave.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/formsave.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/formsave.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/formsave.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/formsave.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/formvieux.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/formvieux.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/formvieux.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/formvieux.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/jquery-3.6.0.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/jquery-3.6.0.js similarity index 99% rename from setup/data/domain/apixpress/www/cdn/public/js/jquery-3.6.0.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/jquery-3.6.0.js index fc6c299..e50fe20 100755 --- a/setup/data/domain/apixpress/www/cdn/public/js/jquery-3.6.0.js +++ b/asupsetup/data/domain/apixpress/www/cdn/public/js/jquery-3.6.0.js @@ -1904,9 +1904,9 @@ Expr = Sizzle.selectors = { operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "$=" ? check && result.slice( -Checkjson.length ) === check : operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + operator === "|=" ? result === check || result.slice( 0, Checkjson.length + 1 ) === check + "-" : false; /* eslint-enable max-len */ diff --git a/setup/data/domain/apixpress/www/cdn/public/js/main.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/main.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/main.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/main.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/mustache.min.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/mustache.min.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/mustache.min.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/mustache.min.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/plugins.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/plugins.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/plugins.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/plugins.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/questio.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/questio.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/questio.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/questio.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/tagASUPVOIRstate.js.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/tagASUPVOIRstate.js.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/tagASUPVOIRstate.js.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/tagASUPVOIRstate.js.js diff --git a/setup/data/domain/apixpress/www/cdn/public/js/tagold.js b/asupsetup/data/domain/apixpress/www/cdn/public/js/tagold.js similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/js/tagold.js rename to asupsetup/data/domain/apixpress/www/cdn/public/js/tagold.js diff --git a/setup/data/domain/apixpress/www/cdn/public/template/formgeneric.mustache b/asupsetup/data/domain/apixpress/www/cdn/public/template/formgeneric.mustache similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/template/formgeneric.mustache rename to asupsetup/data/domain/apixpress/www/cdn/public/template/formgeneric.mustache diff --git a/setup/data/domain/apixpress/www/cdn/public/template/questInput.mustache b/asupsetup/data/domain/apixpress/www/cdn/public/template/questInput.mustache similarity index 100% rename from setup/data/domain/apixpress/www/cdn/public/template/questInput.mustache rename to asupsetup/data/domain/apixpress/www/cdn/public/template/questInput.mustache diff --git a/nationchains/testnetwork.html b/asupsetup/data/domain/apixpress/www/cdn/public/testnetwork.html similarity index 100% rename from nationchains/testnetwork.html rename to asupsetup/data/domain/apixpress/www/cdn/public/testnetwork.html diff --git a/setup/data/domain/apixpress/www/cdn/suiviprojetapiXpress.svg b/asupsetup/data/domain/apixpress/www/cdn/suiviprojetapiXpress.svg similarity index 100% rename from setup/data/domain/apixpress/www/cdn/suiviprojetapiXpress.svg rename to asupsetup/data/domain/apixpress/www/cdn/suiviprojetapiXpress.svg diff --git a/middlewares/checkHeaders.js b/middlewares/checkHeaders.js deleted file mode 100755 index 6176fd5..0000000 --- a/middlewares/checkHeaders.js +++ /dev/null @@ -1,88 +0,0 @@ -const path = require( 'path' ); - -// Check if package is installed or not to pickup the right config file -//const src = ( __dirname.indexOf( '/node_modules/' ) > -1 ) ? '../../..' : '..'; -//const config = require( path.normalize( `${__dirname}/${src}/config.js` ) ); -const config = require( '../tribes/townconf.js' ); -/* -Check que le header contient des éléments necessaire pour les -routes utilisant tribeid / language / token / uuid -*/ -const checkHeaders = ( req, res, next ) => { - //console.log( 'checkHeaders()' ); - // These headers must be passed in the request - // X-Auth and X-Uuid could have any true value - // header is stored in req.app.locals.header to be pass to route - /* const header = { - xtribeid: req.header('x-client-id'), - xlang: req.header('x-language'), - xauth: req.header('x-auth'), - xuuid: req.header('x-uuid'), - xworkon: req.header('x-xorkon', - xapp:req.header('x-app')) - }; - On recupere accessrights via is Authenticated - */ - req.session = {}; - const header = {}; - let missingheader = ""; - //console.log( 'avant validation headers', req.headers ); - //attention changement 7/11/2021 phil des exposedheader cf config.js - //If in httprequest url header are send then they are used inpriority - //Use case : send an email with a unique link that works without password and request to change password - for( const h of config.exposedHeaders ) { - //console.log( h, req.header( h ) ) - if( req.params[ h ] ) { - header[ h ] = req.params[ h ] - } else if( req.header( h ) ) { - header[ h ] = req.header( h ) - } else { - // Missing header - missingheader += " " + h - } - }; - //console.log( 'header', header ) - if( req.params.xauth && req.params.xuuid ) { - // If this exist => it is a timeout limited token - req.app.locals.tokens[ req.params.xpaganid ] = req.params.xauth; - } - req.session.header = header; - // Each header have to be declared - if( missingheader != "" ) { - return res.status( 403 ) - .send( { - info: [ 'forbiddenAccess' ], - model: 'Pagans', - moreinfo: 'checkHeader headerIsMissing:' + missingheader - } ); - }; - //console.log( req.app.locals.tribeids ) - if( !req.app.locals.tribeids.includes( header.xtribe ) ) { - return res.status( 404 ) - .send( { - info: [ 'tribeiddoesnotexist' ], - model: 'Pagans', - moreinfo: `xtribe unknown: ${header.xtribe}` - } ); - } - if( !req.app.locals.tribeids.includes( header.xworkon ) ) { - return res.status( 404 ) - .send( { - info: [ 'tribeiddoesnotexist' ], - model: 'Pagans', - moreinfo: `xworkon unknown: ${header.xworkon}` - } ); - } - if( !config.languagesAvailable.includes( header.xlang ) ) { - return res.status( 404 ) - .send( { - info: [ 'langNotused' ], - model: 'Pagans', - moreinfo: `xlang unknown: ${header.xlang}` - } ); - } - //console.log( 'After middleare checkHeaders.js req.session.header', req.session.header ) - //console.log( 'checkheaders next' ) - next(); -}; -module.exports = checkHeaders; diff --git a/models/Odmdb.js b/models/Odmdb.js deleted file mode 100644 index 48ee7c9..0000000 --- a/models/Odmdb.js +++ /dev/null @@ -1,145 +0,0 @@ -const glob = require("glob"); -const path = require("path"); -const fs = require("fs-extra"); -//const config = require( '../tribes/townconf.js' ); -const check = require(`../nationchains/socialworld/contracts/checkdata.js`); - -/* This manage Objects for indexing and check and act to CRUD - objectpath/objects/schema/objectName.json - /objectNames/searchindes/objectName_valueofkey_uuildlist.json - /objectNames/uuid.json - -*/ -const Odmdb = {}; -/* -Input: metaobject => data mapper of Key: Value - - objname + an object {} + action check => get a valid or not answer - objname + an object {} + action search => apply matching algo to find probalistic object id - objname + action index => update /searcindex of objects concern - -*/ -Odmdb.schema = (objectPath, objectName) => { - // Return schema if exist and objectpath contain objectName { status:200;data:schema} - if (!fs.existsSync(`${objectPath}/${objectName}`)) - return { - status: 404, - info: "|odmdb|objectpathnamedoesnotexist", - moreinfo: `${objectPath}/${objectName}`, - }; - if (!fs.existsSync(`${objectPath}/schema/${objectName}.json`)) { - return { - status: 404, - info: `|odmdb|schemanotfound`, - moreinfo: `file not found ${objectPath}/schema/${objectName}.json`, - }; - } else { - return { - status: 200, - data: fs.readJsonSync(`${objectPath}/schema/${objectName}.json`), - }; - } -}; - -Odmdb.check = (objectPath, objectName, data) => { - /* - @objectPath path to the folder that contain /objects/objectName/ /objectsInfo/objectName_lg.json /objectsMeta/objectName.json - @objectName name of object - @data data to check based on objectsMeta definition - */ - const schema = Odmdb.schema(objectPath, objectName); - if (schema.status != 200) return schema; - console.log("SCHEMA for checking:"); - console.log(schema.data); - console.log("DATA to check:"); - console.log(data); - const validate = checkdata.schema.data(schema.data,data) - - /*const ajv = new Ajv({strict:"log"}); - const validate = ajv.compile(schema.data); - const valid = validate(data) - console.log("valid:",valid) - */ -}; -Odmdb.search = (objectPath, objectName, search) => { - /* - @search= { - txt: string, - algo: match | pattern | fuzzy - fieldstring:[list of field], - indexfilter:{index1:[val1,val2 | ] } - } - Return data:[uuids] - - example: search exact match hill in townId - heavy search={txt:"hill",algo:"match",fieldstring:"toxnId"} - light search={txt:"hill", algo:"match", indexfilter:{"key":"townId","value":[]}} - light search={txt:"hill", algo:"match", indexfilter:{"key":"nationId","value":"ants"}} - - */ - const schema = Odmdb.schema(objectPath, objectName); - if (schema.status != 200) return schema; -}; -Odmdb.get = (objectPath, objectName, uuidprimarykeyList, fieldList) => { - /* - @uuidprimarykeyList list of uuid requested - @fieldList key to return for each object - Return objectName {status:200; data:{found:[{primarykey,field}],notfound:[uuid]} - if all primarykey exist then data.notfound does not exist - if all primarykey does not exist data.found does not exist - */ - const res = { status: 200, data: {} }; - uuidprimarykeyList.forEach((id) => { - if (fs.existsSync(`${objectPath}/${objectName}/${id}.json`)) { - if (!res.data.found) res.data.found = []; - const objectdata = fs.readJsonSync( - `${objectPath}/${objectName}/${id}.json` - ); - if (!fieldList) { - res.data.found.push(objectdata); - } else { - const objinfo = {}; - fieldlList.forEach((k) => { - if (objectdata[k]) objinfo[k] = objectdata[k]; - }); - res.data.found.push(objinfo); - } - } else { - if (!res.data.notfound) res.data.notfound = []; - } - }); - return res; -}; -Odmdb.create = (objectPath, objectName, data) => { - /* - Create an objects data into objectName - @objectPath path to the folder that contain /objects/objectName/ /objectsInfo/objectName_lg.json /objectsMeta/objectName.json - @objectName name of object - @data data to check based on objectsMeta definition - */ -}; -Odmdb.update = (objectPath, objectName, data) => { - /* - Create an objects data into objectName - @objectPath path to the folder that contain /objects/objectName/ /objectsInfo/objectName_lg.json /objectsMeta/objectName.json - @objectName name of object - @data data to check based on objectsMeta definition - */ -}; -Odmdb.delete = (objectPath, objectName, data) => { - /* - Create an objects data into objectName - @objectPath path to the folder that contain /objects/objectName/ /objectsInfo/objectName_lg.json /objectsMeta/objectName.json - @objectName name of object - @data data to check based on objectsMeta definition - */ -}; -console.log("test Odmdb"); -console.log( - Odmdb.check( - "/media/phil/usbfarm/apxtrib/nationchains/socialworld/objects", - "nations", - { nationId: "123", status: "unchain" } - ) -); -module.exports = Odmdb; diff --git a/models/lg/odmdb_en.json b/models/lg/odmdb_en.json deleted file mode 100644 index 74de930..0000000 --- a/models/lg/odmdb_en.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "schemanotfound":"Schema not found", - "bjectpathnamedoesnotexist":"ObjectPath or objectName does not exist " -} \ No newline at end of file diff --git a/nationchains/deals/index/config.json b/nationchains/deals/index/config.json new file mode 100644 index 0000000..823df0c --- /dev/null +++ b/nationchains/deals/index/config.json @@ -0,0 +1,4 @@ +{ + "schema":"nationchains/schema/deals.json", + "lastupdate":0 +} \ No newline at end of file diff --git a/nationchains/deals/myblocks.json b/nationchains/deals/myblocks.json new file mode 100644 index 0000000..03b367b --- /dev/null +++ b/nationchains/deals/myblocks.json @@ -0,0 +1,8 @@ +{ + "object": "towns", + "action":"C", + "id":"hill", + "dt":"2023-10-01 22 12 12UTC+2:00", + "frompaganId":"123", + "topagandId":"124" +} \ No newline at end of file diff --git a/nationchains/socialworld/objects/nations/ants.json b/nationchains/nations/ants.json similarity index 100% rename from nationchains/socialworld/objects/nations/ants.json rename to nationchains/nations/ants.json diff --git a/nationchains/nations/index/config.json b/nationchains/nations/index/config.json new file mode 100644 index 0000000..49280db --- /dev/null +++ b/nationchains/nations/index/config.json @@ -0,0 +1,4 @@ +{ + "schema":"nationchains/schema/nations.json", + "lastupdate":0 +} \ No newline at end of file diff --git a/nationchains/nations/index/nations_nationId_all.json b/nationchains/nations/index/nations_nationId_all.json new file mode 100644 index 0000000..f480caa --- /dev/null +++ b/nationchains/nations/index/nations_nationId_all.json @@ -0,0 +1,7 @@ +{ + "ants": { + "nationId": "ants", + "dtcreate": "2023-03-19T14:05:00+02:00", + "contracts": "socialworld/contracts/nation_base.js" + } +} diff --git a/nationchains/pagans/index/config.json b/nationchains/pagans/index/config.json new file mode 100644 index 0000000..3b2234f --- /dev/null +++ b/nationchains/pagans/index/config.json @@ -0,0 +1,4 @@ +{ + "schema":"nationchains/schema/pagans.json", + "lastupdate":0 +} \ No newline at end of file diff --git a/nationchains/schema/accessright.json b/nationchains/schema/accessright.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/nationchains/schema/accessright.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/nationchains/schema/index/config.json b/nationchains/schema/index/config.json new file mode 100644 index 0000000..ae092e3 --- /dev/null +++ b/nationchains/schema/index/config.json @@ -0,0 +1,4 @@ +{ + "schema":"nationchains/schema/schemas.json", + "lastupdate":0 +} \ No newline at end of file diff --git a/nationchains/socialworld/objects/schema/lg/nations_en.json b/nationchains/schema/lg/nations_en.json similarity index 100% rename from nationchains/socialworld/objects/schema/lg/nations_en.json rename to nationchains/schema/lg/nations_en.json diff --git a/nationchains/socialworld/objects/schema/lg/nations_fr.json b/nationchains/schema/lg/nations_fr.json similarity index 100% rename from nationchains/socialworld/objects/schema/lg/nations_fr.json rename to nationchains/schema/lg/nations_fr.json diff --git a/nationchains/socialworld/objects/schema/lg/pagans_en.json b/nationchains/schema/lg/pagans_en.json similarity index 100% rename from nationchains/socialworld/objects/schema/lg/pagans_en.json rename to nationchains/schema/lg/pagans_en.json diff --git a/nationchains/socialworld/objects/schema/lg/pagans_fr.json b/nationchains/schema/lg/pagans_fr.json similarity index 100% rename from nationchains/socialworld/objects/schema/lg/pagans_fr.json rename to nationchains/schema/lg/pagans_fr.json diff --git a/nationchains/socialworld/objects/schema/lg/towns_en.json b/nationchains/schema/lg/towns_en.json similarity index 100% rename from nationchains/socialworld/objects/schema/lg/towns_en.json rename to nationchains/schema/lg/towns_en.json diff --git a/nationchains/socialworld/objects/schema/lg/towns_fr.json b/nationchains/schema/lg/towns_fr.json similarity index 100% rename from nationchains/socialworld/objects/schema/lg/towns_fr.json rename to nationchains/schema/lg/towns_fr.json diff --git a/nationchains/socialworld/objects/schema/nations.json b/nationchains/schema/nations.json similarity index 95% rename from nationchains/socialworld/objects/schema/nations.json rename to nationchains/schema/nations.json index 0bd8dc8..d03b207 100644 --- a/nationchains/socialworld/objects/schema/nations.json +++ b/nationchains/schema/nations.json @@ -21,7 +21,7 @@ }, "required": ["nationId", "dtcreate","contracts"], "additionalProperties":false, - "apxprimarykey":"nationId", + "apxprimarykey":["nationId"], "apxsearchindex": [ { "key": "nationId", "value": [] } ] diff --git a/nationchains/socialworld/objects/schema/pagans.json b/nationchains/schema/pagans.json similarity index 98% rename from nationchains/socialworld/objects/schema/pagans.json rename to nationchains/schema/pagans.json index 239756a..613ab39 100755 --- a/nationchains/socialworld/objects/schema/pagans.json +++ b/nationchains/schema/pagans.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "socialworld/schema/pagans", + "$id": "nationchains/schema/pagans", "title":"Pagan definition", "description": "A pagan is an uuid to manage identity by deliver a way to its owner to proof he owns from a privatekey in the socialworld of apXtrib and manage access keys deliver by druid or mayor to interact physical ressource (CRUD on it).", "type": "objects", diff --git a/nationchains/socialworld/objects/schema/towns.json b/nationchains/schema/towns.json similarity index 100% rename from nationchains/socialworld/objects/schema/towns.json rename to nationchains/schema/towns.json diff --git a/nationchains/schema/tribes.json b/nationchains/schema/tribes.json new file mode 100644 index 0000000..0ec1ea5 --- /dev/null +++ b/nationchains/schema/tribes.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "nationchains/schema/tribes", + "title": "Tribes", + "description": "A tribe belonging to a town", + "type": "object", + "properties": { + "townId": { + "description": "|Towns|townnamedesc", + "desclong": "|Townss|townnamedesclong", + "info": "|Towns|townnameinfo", + "type": "string", + "pattern":"^[a-z0-9]*$" + }, + "nationId": { + "description": "|Towns|nationdesc", + "desclong": "|Townss|nationdesclong", + "type": "string", + "$apxenumkey": "socialworld/objects/nations/searchindex/nations_uuid_uuid.json" + }, + "status": { + "desc": "|Towns|statusdesc", + "default": "active", + "type": "string", + "$apxenumkey": "data", + "data": { + "chain": { "desc": "|Towns|statuschain" }, + "tochain": { "desc": "|Towns|statustosync" }, + "unchain": { "desc": "|Towns|statusunchain" } + } + }, + "url": { + "desc": "|Towns|urldesc", + "type": "string", + "apxtype":"url" + } + }, + "required": ["townId", "status", "nationId", "url"], + "apxprimarykey": "townId", + "apxsearchindex": [ + { "key": "status", "value": "townId" }, + { "key": "nationId", "value": "townId" }, + { "key": "townId", "value": [] } + ] +} diff --git a/nationchains/schema/www.json b/nationchains/schema/www.json new file mode 100644 index 0000000..d33b88e --- /dev/null +++ b/nationchains/schema/www.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "nationchains/schema/www", + "title": "Town", + "description": "A pace web available for a domaine, with accessright", + "type": "object", + "properties": { + "townId": { + "description": "|Towns|townnamedesc", + "desclong": "|Townss|townnamedesclong", + "info": "|Towns|townnameinfo", + "type": "string", + "pattern":"^[a-z0-9]*$" + }, + "nationId": { + "description": "|Towns|nationdesc", + "desclong": "|Townss|nationdesclong", + "type": "string", + "$apxenumkey": "socialworld/objects/nations/searchindex/nations_uuid_uuid.json" + }, + "status": { + "desc": "|Towns|statusdesc", + "default": "active", + "type": "string", + "$apxenumkey": "data", + "data": { + "chain": { "desc": "|Towns|statuschain" }, + "tochain": { "desc": "|Towns|statustosync" }, + "unchain": { "desc": "|Towns|statusunchain" } + } + }, + "url": { + "desc": "|Towns|urldesc", + "type": "string", + "apxtype":"url" + } + }, + "required": ["townId", "status", "nationId", "url"], + "apxprimarykey": "townId", + "apxsearchindex": [ + { "key": "status", "value": "townId" }, + { "key": "nationId", "value": "townId" }, + { "key": "townId", "value": [] } + ] +} diff --git a/nationchains/socialworld/contracts/nation_base.js b/nationchains/socialworld/contracts/nation_base.js deleted file mode 100644 index fbe091a..0000000 --- a/nationchains/socialworld/contracts/nation_base.js +++ /dev/null @@ -1,36 +0,0 @@ -/* -Ants nation contract -*/ - -const Contract={ - object:"nation", - id:"ants", - version:"0.0.0", - dt_create:"20230307", - dt_update:"", - info:"https://apxtrib.crabdance.com/nation_base.html", -}; - -Contract.trigger = ()=>{ - // Identification of rule to trig - // Create token for a tribe => -} - -Contract.druidAllowedtoCreateToken = (tokenconf, hashtokenconf)=>{ - /* - @tokenconf ={ - tokenvalue: float value in apxtr, - quantity: int number of token, - druidId: uuid, - costrequest: float cost of this in apxtr to the mayorId - } - Check balance druid wallet - @return {status:200, data:{transacId:blocktimestamp,tokens:[token1, token2, ...]} - {status:<>200, info:'error message'} - Store transaction in open block with transacId - A token = druidUuid_hash(with blockchain elected privatekey) - Druid can sale his token with his rules at a tribe level but any user that request an exchange ffrom a token - */ -} - -module.exports = Contract; \ No newline at end of file diff --git a/nationchains/socialworld/contracts/toolsbox.js b/nationchains/socialworld/contracts/toolsbox.js deleted file mode 100755 index 76e3c5d..0000000 --- a/nationchains/socialworld/contracts/toolsbox.js +++ /dev/null @@ -1,604 +0,0 @@ -/* eslint-disable no-useless-escape */ -const fs = require( 'fs' ); -const path = require( 'path' ); -const bcrypt = require( 'bcrypt' ); -const moment = require( 'moment' ); -const config = require( '../config' ); -const utils = {}; - -console.log( "Check in /utils/index.js to find usefull function for your dev.\n Feel free to send suggestion, code to maintainer of apxtrib project (see /package.json to get email).\n We'll add to the roadmap to add it." ); - -/** - * EMAIL - */ -/* const validateEmail = email => { - const regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return regExp.test(email); -}; - -const validatePassword = pwd => { - const regExp = new RegExp( - /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.{}:|\s]{8,}/ - ); - return regExp.test(pwd); -}; - -const filterInvalidInArray = (array, validate) => - array ? array.filter(el => !validate(el)) : undefined; // return undefined when every elements is valid - -/** - * POSTAL CODE - */ -/* -const validatePostalCode = postalCode => - /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(postalCode); - -/** - * PHONE - */ -/* const validatePhoneNumber = phoneNumber => - /((^0[1-9]|\+[0-9]{3})([-. ]?[0-9]{2}){4}$)/.test(phoneNumber); - -const correctPhoneNumber = phone => - phone[0] === '0' ? '+33' + phone.substr(1) : phone; - -const checkData = (appProfil, referential, data) => { - // @TODO get a referentiel per object then check data validity and allowed access - // need to add referentiel manager - const invalidefor = []; - let updateDatabase = false; - Object.keys(data).forEach(field => { - switch (field) { - case 'token': - updateDatabase = true; - break; - case 'email': - if (!validateEmail(data.email)) { - invalidefor.push('ERREMAIL:' + field); - } else { - updateDatabase = true; - } - break; - case 'password': - if (!validatePassword(data.password)) { - invalidefor.push('ERRPWD:' + field); - } else { - data.password = bcrypt.hash(data.password, config.saltRounds); - updateDatabase = true; - } - break; - } - }); - return { invalidefor, data, updateDatabase }; -}; -*/ -//Permet d'attendre en milliseconde -// s'utilise avec async ()=>{ -// await sleep(2000) -//} -utils.sleep = ( ms ) => { - return new Promise( resolve => setTimeout( resolve, ms ) ); -} -utils.generemdp = ( nbpos ) => { - const chaine = "ABCDEFGHIJKLMNPQRSTUVWZY123456789"; - let mdp = ""; - for( var i = 0; i < nbpos; i++ ) { - var pos = Math.floor( Math.random() * chaine.length ); - mdp += chaine.substring( pos, pos + 1 ); - } - return mdp; -} -utils.generecompteur = ( filecpt, typeincrement ) => { - let file = `${filecpt}/${typeincrement}.json`; - let prefix = ""; - if( typeincrement = "ANNEESEMAINE" ) { - file = `${filecpt}/${typeincrement}${moment().format('YYYY')}${moment().format('WW')}.json` - prefix = `${moment().format('YYYY')}${moment().format('WW')}` - } - let num = 1; - try { - num = parseInt( fs.readFileSync( file, 'utf8' ) ) + 1; - } catch ( err ) { - console.log( "Nouveau compteur incrementale ", file ) - } - fs.writeFileSync( file, num, 'utf8' ); - return prefix + num -} -/** - * CSV - */ -utils.json2csv = ( jsondata, options, callback ) => { - // uniquement json = [{niv1:val,niv1:[liste of val]}] - // console.log('_________________________'); - // console.log(jsondata) - // console.log('_________________________'); - if( jsondata.length == 0 ) { - return callback( "Empty json", null ); - } - if( !options.retln ) options.retln = '\n'; - if( !options.sep ) options.sep = ';'; - if( !options.arraysplitsep ) options.arraysplitsep = ","; - if( !options.replacespecialcarJson2Csv ) { - options.replacespecialcarJson2Csv = [] - } else { - if( typeof options.replacespecialcarJson2Csv == "string" ) { - //permet de passer des regex en string - options.replacespecialcarJson2Csv = eval( options.replacespecialcarJson2Csv ); - } - }; - let etat = ""; - let csv = ''; - let entete = ''; - let prem = true; - for( const j in jsondata ) { - // console.log(jsondata[j]) - for( const c in options.champs ) { - if( prem ) { - entete += options.champs[ c ] + options.sep; - } - if( jsondata[ j ][ options.champs[ c ] ] ) { - if( options.array.indexOf( options.champs[ c ] ) > -1 ) { - csv += jsondata[ j ][ options.champs[ c ] ].join( options.arraysplitsep ) + options.sep; - } else { - let currentValue = ""; - if( jsondata[ j ][ options.champs[ c ] ] ) currentValue += jsondata[ j ][ options.champs[ c ] ]; - options.replacespecialcarJson2Csv.forEach( re => { - //console.log(currentValue) - currentValue = currentValue.replace( re[ 1 ], re[ 0 ] ) - } ) - csv += currentValue + options.sep; - } - } else { - csv += options.sep; - } - } - csv = csv.substring( 0, csv.length - 1 ) + options.retln; - if( prem ) { - prem = false; - entete = entete.substring( 0, entete.length - 1 ) + options.retln; - // console.log(entete) - } - } - // return entete + csv; - if( etat == "" ) { - return callback( null, entete + csv ); - } else { - return callback( etat, null ); - } -}; -/** - * Get headers from first line of CSV - * @param {array} lines array of string which contains each csv lines - * @return {array} string array of headers - */ -utils.getHeaders = ( lines, sep ) => lines[ 0 ].split( sep ) - .map( i => i.replace( /"/g, '' ) ); -/** - * [csv2json description] - * @param {object} csv object of csv file that has been read - * @param {object} options object containing csv options, headers, ... - {retln:'code de retour de ligne \n ou \n\r', - sep:'code to split cells', - champs:[ch1,ch2,...] catch only those field, - array:[ch1, ] can have more than one field champs with same name then data are push into an array } - * @param {Function} callback callback function - * @return {callback} - return an error if error, else return json - it convert a csv file into a json = [{field:value}] - -Usage example: -fiche.csv2article = (err, fiche) => { - if (!err) { - console.log(fiche) - } -} -utils.csv2json(fs.readFileSync('./devdata/tribee/aubergenville/infoexterne/localbusiness.csv', 'utf-8'), { - retln: "\n", - sep: ";", - champs: ["NOM", "OBJET", "ADRESSE_PRO", "CP_PRO", "VILLE_PRO", "ZONE", "PHONE_PRO", "HORAIRESDESC", "HORAIREDATA", "URL", "FACEBOOK", "INSTA", "EMAIL_PRO", "IMG", "TAG"], - array: ["TAG", "PHONE_PRO", "EMAIL_PRO"] -}, fiche.csv2article) - - */ -utils.replacecarbtweendblquote = ( csv, car, carremplacant ) => { - /* - return csv text with any car betwenn 2 " by CARSEPARATOR - */ - let newcsv = ""; - let txtencours = ""; - let flagouvert = false - const sepreg = new RegExp( `${car}`, 'gmi' ) - for( let j = 0; j < csv.length; j++ ) { - //if((csv[j] == "\"" && csv[j + 1] && csv[j + 1] != "\"") || (csv[j] == "\"" && csv[j - 1] && csv[j - 1] != "\"") || (csv[j] == "\"" && csv[j - 1] && csv[j - 2] && csv[j - 1] != "\"" && csv[j - 2] != "\"")) { - if( csv[ j ] == "\"" ) { - if( flagouvert ) { - // on cherche à ferme une chaine de texte - if( csv[ j + 1 ] == "\"" ) { - //on a "" consecutif qu'on remplace par "" et on fait j+1 - txtencours += "\"\"" - j++ - } else { - // on a bien une fermeture - flagouvert = false - newcsv += txtencours.replace( sepreg, carremplacant ) - txtencours = "\"" - } - } else { - // on ouvre une chaine - flagouvert = true - //on met le contenu précédent ds newcsv - newcsv += txtencours - txtencours = "\"" - } - //} else if((csv[j] !== "\n") && (csv[j + 1] && csv[j] + csv[j + 1] !== "\n\r")) { - } else if( csv[ j ] !== "\n" ) { - txtencours += csv[ j ] - // } else if((csv[j] == "\n") || (csv[j + 1] && csv[j] + csv[j + 1] == "\n\r")) { - } else if( csv[ j ] == "\n" ) { - if( !flagouvert ) txtencours += "\n" - } - } - return newcsv + txtencours -} -utils.analysestring = ( string ) => { - let buftxt = "" - let bufcode = "" - let i = 0 - let avecRL = false - for( let p = 0; p < string.length; p++ ) { - if( string[ p ].charCodeAt() == 10 ) { - buftxt += "[RL]" - avecRL = true - } else { - buftxt += string[ p ] - } - bufcode += "-" + string[ p ].charCodeAt(); - if( i == 20 ) { - if( avecRL ) { - console.log( `${buftxt} - ${bufcode}` ) - } else { - console.log( `${buftxt} ---- ${bufcode}` ) - } - i = 0; - buftxt = "" - bufcode = "" - avecRL = false - } - i++; - } -} - -const txtstring = `32932,BK_F2F_B_COM_10x1H-09,"My Communication Workshop ""Session N°9 - 1H""","

 

- - - - - - -
-

Learner who needs to develop their ability to communicate effectively at work, both in writing and speaking

-
",,english,2,0,,2,0,classroom,"0000-00-00 00:00:00","0000-00-00 00:00:00",0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32932,1101,,"BUSINESS KEYS",0, -32933,BK_F2F_B_COM_10x1H-10,"My Communication Workshop Session N°10 - 1H","

 

- - - - - - -
-

Learner who needs to develop their ability to communicate effectively at work, both in writing and speaking

-
",,english,2,0,,2,0,classroom,"0000-00-00 00:00:00","0000-00-00 00:00:00",0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32933,1101,,"BUSINESS KEYS",0, -32934,BK_F2F_B_JOB_10x1H-01,"My Job Search Workshop Session N°1 - 1H","

PACK JOB SEARCH

",,english,2,0,,2,0,classroom,,,0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32934,1108,,,0, -32935,BK_F2F_B_JOB_10x1H-02,"My Job Search Workshop Session N°2 - 1H","

PACK JOB SEARCH

",,english,2,0,,2,0,classroom,,,0000-00-00,0000-00-00,https://www.yesnyoulearning.com/lms/index.php?r=player&course_id=32935,1108,,,0,` -//utils.analysestring(txtstring) -//console.log(utils.replacecarbtweendblquote(txtstring, ",", 'CARSEPARATOR') -// .split("\n")[0].split(",")) -utils.csv2json = ( csv, options, callback ) => { - // EN CAS DE PB AVEC UN FICHIER EXCEL RECALCITRANT - // l'ouvrir dans calc linux et sauvegarder csv utf8, ; , " enregistrer le contenu de la cellule comme affiché - console.log( '\n--------------- CSV2JSON ---------------\n' ); - // Default CSV options - if( !options.retln ) options.retln = '\n'; - if( csv.indexOf( '\n\r' ) > -1 ) options.retln = '\n\r'; - if( !options.sep ) options.sep = ';'; - //gestion d un separateur dans une chaine de texte - //const regseptext = new RegExp(`${options.sep}(?!(?:[^"]*"[^"]*")*[^"]*$)`, 'gm'); - //csv = csv.replace(regseptext, "CARACSEPAR"); - // csv = utils.replacecarbtweendblquote(csv, options.retln, "RETLIGNE") - csv = utils.replacecarbtweendblquote( csv, options.sep, "CARSEPARATOR" ) - if( !options.replacespecialcarCsv2Json ) { - options.replacespecialcarCsv2Json = [] - } else { - if( typeof options.replacespecialcarCsv2Json == "string" ) { - //permet de passer des regex en string - options.replacespecialcarCsv2Json = eval( options.replacespecialcarCsv2Json ); - } - }; - const result = []; - const lines = csv.split( options.retln ); - const headers = utils.getHeaders( lines, options.sep ); - let unknownHeaders = ''; - //console.log('headers', headers) - //console.log('options.champs', options.champs) - headers.forEach( header => { - // Si un header n'est pas présent dans la liste des champs prédéfinis - // on l'ajoute aux champs inconnus - if( options.champs.indexOf( header ) === -1 ) { - unknownHeaders += `${header}, `; - } - } ); - if( unknownHeaders !== '' ) { - const errorMsg = `CSV2JSON() - Champs inconnus : ${unknownHeaders}`; - return callback( errorMsg, null ); - } - lines.forEach( ( line, index ) => { - // Skip headers line or empty lines - if( index === 0 || line.replace( /\s/g, '' ) - .length === 0 ) { - return; - } - // pour debuguer on met origincsv pour voir la ligne d'origine - const currentLineData = { 'origincsv': line, 'linenumber': index }; - const currentLine = line.split( options.sep ); // Current string in the line - for( let j = 0; j < headers.length; j++ ) { - // Si la ligne n'est pas vide - if( currentLine[ j ] ) { - // On clean le champs - // ajout eventuel de modification de caracter reservé ; dans les libelléetc... - let currentValue = currentLine[ j ].trim() - //on transforme le caractere separateur modifié entre double quote - currentValue = currentValue.replace( 'CARSEPARATOR', options.sep ); - options.replacespecialcarCsv2Json.forEach( re => { - currentValue = currentValue.replace( re[ 0 ], re[ 1 ] ) - } ) - // Si le header est un email - if( headers[ j ].includes( 'EMAIL' ) ) { - // Supprimer tous les espaces - currentValue = currentLine[ j ].replace( /\s/g, '' ); - } - // on check si le chamos doit être numerique - if( options.numericfield.includes( headers[ j ] ) ) { - currentValue = currentLine[ j ].replace( /\,/g, '.' ); - try { - const test = parseFloat( currentValue ); - } catch ( er ) { - return callback( `${headers[j]} contiens la valeur -${currentValue}- et devrait être numerique`, null ); - } - } - if( currentValue ) { - // Si le header actuel est de type array - // Cela signifie que le header apparaît plusieurs fois dans le CSV - // et que les valeurs correspondantes à ce header - // doivent être mis dans un array - if( options.array && options.array.indexOf( headers[ j ] ) > -1 ) { - // Si le tableau pour ce header n'existe pas on le crée - if( !currentLineData[ headers[ j ] ] ) { - currentLineData[ headers[ j ] ] = []; - } - if( options.arraysplitsep ) { - currentValue.split( options.arraysplitsep ) - .forEach( v => { - currentLineData[ headers[ j ] ].push( v ); - } ) - } else { - currentLineData[ headers[ j ] ].push( currentValue ); - } - } else { - // Si un header est déjà présent pour la ligne - // alors que il n'est pas spécifié comme étant un array - // on retourne une erreur - if( currentLineData[ headers[ j ] ] ) { - const errorMsg = `Le champ ${ - headers[j] - } est présent plusieurs fois alors qu'il n'est pas spécifié comme étant un array !`; - return callback( errorMsg, null ); - } - currentLineData[ headers[ j ] ] = currentValue; - } - } - } - } - result.push( currentLineData ); - } ); - return callback( null, result ); -}; -/** - * [csvparam2json description] - * @param {object} csv object of csv file that has been read - * @param {object} options object containing csv options, headers, ... - {retln:'code de retour de ligne \n ou \n\r', - sep:'code to split cells', - champs:[ch1,ch2,...] catch only those field, - array:[ch1, ] can have more than one field champs with same name then data are push into an array } - * @param {Function} callback callback function - * @return {callback} - return an error if error, else return json - it converts a csv with 3 column col1;col2;col3 in a json in a tree - if in col1 we have __ => then it splits a leaf - col1 = xxxx__yyyy ; col2 = value ; col3 = comment that is ignored - return data = {xxxx:{yyyy:value}} - col1 = xxxx; col2 = value; col3 = comment ignored -return data = {xxxx:value} - -Usage example: -fiche.csvparam2article = (err, fiche) => { - if (!err) { - console.log(fiche) - } -} -utils.csvparam2json(fs.readFileSync('./devdata/tribee/aubergenville/infoexterne/localbusiness.csv', 'utf-8'), { - retln: "\n", - sep: ";", - champs: ["NOM", "OBJET", "ADRESSE_PRO", "CP_PRO", "VILLE_PRO", "ZONE", "PHONE_PRO", "HORAIRESDESC", "HORAIREDATA", "URL", "FACEBOOK", "INSTA", "EMAIL_PRO", "IMG", "TAG"], - array: ["TAG", "PHONE_PRO", "EMAIL_PRO"] -}, fiche.csv2article) - - */ -utils.csvparam2json = ( csv, options, callback ) => { - console.log( '\n--------------- CSVPARAM2JSON ---------------\n' ); - let etat = ""; - const param = {}; - if( !options.retln ) { - options.retln = '\n'; - } - if( csv.indexOf( '\n\r' ) > -1 ) { - options.retln = '\n\r'; - } - if( !options.sep ) { - options.sep = ';'; - } - if( !options.seplevel ) { - options.seplevel = "__"; - } - if( !options.replacespecialcarCsv2Json ) { - options.replacespecialcarCsv2Json = [] - } else { - if( typeof options.replacespecialcarCsv2Json == "string" ) { - //permet de passer des regex en string - options.replacespecialcarCsv2Json = eval( options.replacespecialcarCsv2Json ); - } - }; - const lines = csv.split( options.retln ); - for( let i = 0; i < lines.length; i++ ) { - const infol = lines[ i ].split( options.sep ) - //console.log(infol) - if( infol[ 0 ].length > 4 && infol.length < 2 ) { - // si le 1er element à plus de 4 caractere et s'il y a moins de 3 colonnes c'est qu'il y a un pb - etat += `Erreur sur ${lines[i]} moins de 3 column separé par ${options.sep}`; - continue; - } - // On ajoute ici la gestion de tous les caracteres spéciaux - // reservées pour le csv ; ' etc..' - if( infol[ 1 ] && infol[ 1 ] + "" == infol[ 1 ] ) { - options.replacespecialcarCsv2Json.forEach( re => { - //console.log("gggggggggggggggggggg", infol[1]) - infol[ 1 ] = infol[ 1 ].replace( re[ 0 ], re[ 1 ] ); - } ) - // console.log(infol[1]) - infol[ 1 ] = infol[ 1 ].replace( /'|’/g, "\"" ); - //console.log(infol[1]) - if( infol[ 1 ].toLowerCase() === 'true' ) { - infol[ 1 ] = true; - } else if( infol[ 1 ].toLowerCase() === 'false' ) { - infol[ 1 ] = false; - } - } - console.log( infol[ 1 ] ) - //supprime des lignes vides - if( infol[ 0 ] == '' ) continue; - if( infol[ 0 ].indexOf( options.seplevel ) == -1 ) { - param[ infol[ 0 ] ] = infol[ 1 ] - continue; - } else { - const arbre = infol[ 0 ].split( options.seplevel ) - switch ( arbre.length ) { - case 1: - param[ arbre[ 0 ] ] = infol[ 1 ]; - break; - case 2: - if( arbre[ 1 ] != "ARRAY" ) { - if( !param[ arbre[ 0 ] ] ) param[ arbre[ 0 ] ] = {}; - param[ arbre[ 0 ] ][ arbre[ 1 ] ] = infol[ 1 ]; - } else { - if( !param[ arbre[ 0 ] ] ) param[ arbre[ 0 ] ] = []; - //console.log('aff', infol[1].substring(1, infol[1].length - 1).replace(/""/g, '"')) - eval( "result=" + infol[ 1 ] ) - //.substring(1, infol[1].length - 1).replace(/""/g, '"')) - param[ arbre[ 0 ] ].push( result ) - } - break; - case 3: - if( arbre[ 2 ] != "ARRAY" ) { - if( !param[ arbre[ 0 ] ] ) param[ arbre[ 0 ] ] = {}; - if( !param[ arbre[ 0 ] ][ arbre[ 1 ] ] ) param[ arbre[ 0 ] ][ arbre[ 1 ] ] = {}; - param[ arbre[ 0 ] ][ arbre[ 1 ] ][ arbre[ 2 ] ] = infol[ 1 ]; - } else { - if( !param[ arbre[ 0 ] ] ) param[ arbre[ 0 ] ] = {}; - if( !param[ arbre[ 0 ] ][ arbre[ 1 ] ] ) param[ arbre[ 0 ] ][ arbre[ 1 ] ] = []; - //eval("result = \"test\""); - //console.log(result); - eval( "result=" + infol[ 1 ] ); - //.substring(1, infol[1].length - 1).replace(/""/g, '"')) - param[ arbre[ 0 ] ][ arbre[ 1 ] ].push( result ) - } - break; - case 4: - if( arbre[ 3 ] != "ARRAY" ) { - if( !param[ arbre[ 0 ] ] ) param[ arbre[ 0 ] ] = {}; - if( !param[ arbre[ 0 ] ][ arbre[ 1 ] ] ) param[ arbre[ 0 ] ][ arbre[ 1 ] ] = {}; - if( !param[ arbre[ 0 ] ][ arbre[ 1 ] ][ arbre[ 2 ] ] ) param[ arbre[ 0 ] ][ arbre[ 1 ] ][ arbre[ 2 ] ] = {}; - param[ arbre[ 0 ] ][ arbre[ 1 ] ][ arbre[ 2 ] ][ arbre[ 3 ] ] = infol[ 1 ]; - } else { - if( !param[ arbre[ 0 ] ] ) param[ arbre[ 0 ] ] = {}; - if( !param[ arbre[ 0 ] ][ arbre[ 1 ] ] ) param[ arbre[ 0 ] ][ arbre[ 1 ] ] = {}; - if( !param[ arbre[ 0 ] ][ arbre[ 1 ] ][ arbre[ 2 ] ] ) param[ arbre[ 0 ] ][ arbre[ 1 ] ][ arbre[ 2 ] ] = []; - eval( "result=" + infol[ 1 ] ) - //.substring(1, infol[1].length - 1).replace(/""/g, '"')) - param[ arbre[ 0 ] ][ arbre[ 1 ] ][ arbre[ 2 ] ].push( result ) - break; - } - default: - break; - } - } - } - // JSON.parse(JSON.stringify(param)) - console.log( 'kkkkkkkkkkkkkkkkkk', param[ 'catalogue' ][ 'filtrecatalog' ][ 'searchengine' ] ) - if( etat == "" ) { - return callback( null, JSON.parse( JSON.stringify( param ) ) ); - } else { - return callback( etat, null ); - } -} -utils.levenshtein = ( a, b ) => { - if( a.length === 0 ) return b.length; - if( b.length === 0 ) return a.length; - let tmp, i, j, prev, val, row; - // swap to save some memory O(min(a,b)) instead of O(a) - if( a.length > b.length ) { - tmp = a; - a = b; - b = tmp; - } - row = Array( a.length + 1 ); - // init the row - for( i = 0; i <= a.length; i++ ) { - row[ i ] = i; - } - // fill in the rest - for( i = 1; i <= b.length; i++ ) { - prev = i; - for( j = 1; j <= a.length; j++ ) { - if( b[ i - 1 ] === a[ j - 1 ] ) { - val = row[ j - 1 ]; // match - } else { - val = Math.min( row[ j - 1 ] + 1, // substitution - Math.min( prev + 1, // insertion - row[ j ] + 1 ) ); // deletion - } - row[ j - 1 ] = prev; - prev = val; - } - row[ a.length ] = prev; - } - return row[ a.length ]; -}; -utils.testinarray = ( array, arrayreferent ) => { - // au moins un element de array existe dans arryreferent - let exist = false; - if( arrayreferent ) { - //console.log('arrrrrrrrrrrrrrr', arrayreferent) - array.forEach( e => { - //console.log(e) - if( arrayreferent.includes( e ) ) exist = true - } ) - } - return exist -}; -/* -DIRECTORY -*/ -const isDirectory = source => fs.lstatSync( source ) - .isDirectory(); -const getDirectories = source => fs.readdirSync( source ) - .map( name => path.join( source, name ) ) - .filter( isDirectory ); -module.exports = utils; diff --git a/nationchains/socialworld/contracts/town_base.js b/nationchains/socialworld/contracts/town_base.js deleted file mode 100644 index d40639a..0000000 --- a/nationchains/socialworld/contracts/town_base.js +++ /dev/null @@ -1,36 +0,0 @@ -/* -Town contract:town_base -*/ - -const Contract={ - object:"town", - id:"town_base", - version:"0.0.0", - dt_create:"20230307", - dt_update:"", - info:"https://apxtrib.crabdance.com/town_base.html", -}; - -Contract.trigger = ()=>{ - // Identification of rule to trig - // Create token for a tribe => -} - -Contract.druidAllowedtoCreateToken = (tokenconf, hashtokenconf)=>{ - /* - @tokenconf ={ - tokenvalue: float value in apxtr, - quantity: int number of token, - druidId: uuid, - costrequest: float cost of this in apxtr to the mayorId - } - Check balance druid wallet - @return {status:200, data:{transacId:blocktimestamp,tokens:[token1, token2, ...]} - {status:<>200, info:'error message'} - Store transaction in open block with transacId - A token = druidUuid_hash(with blockchain elected privatekey) - Druid can sale his token with his rules at a tribe level but any user that request an exchange ffrom a token - */ -} - -module.exports = Contract; \ No newline at end of file diff --git a/nationchains/socialworld/objects/nations/searchindex/nations_nationId_all.json b/nationchains/socialworld/objects/nations/searchindex/nations_nationId_all.json deleted file mode 100644 index 998a8dd..0000000 --- a/nationchains/socialworld/objects/nations/searchindex/nations_nationId_all.json +++ /dev/null @@ -1,6 +0,0 @@ -{"ants":{ - "nationId":"ants", - "publickey":"123", - "status":"unchain", - "svg":"" -}} \ No newline at end of file diff --git a/nationchains/socialworld/objects/schema/accessright.json b/nationchains/socialworld/objects/schema/accessright.json deleted file mode 100644 index e69de29..0000000 diff --git a/nationchains/socialworld/setup/townSetup.json b/nationchains/socialworld/setup/townSetup.json deleted file mode 100755 index 33555bf..0000000 --- a/nationchains/socialworld/setup/townSetup.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "sudoerUser": "phil", - "nationName":"ants", - "townName":"devndda", - "tribeName":"devndda", - "dns":"unchain", - "paganslogin":"pat", - "apiport": 3018, - "language": ["fr", "en"], - "jwtsecret": "longsentenceusedtoencryptionChangethisforproduction" -} \ No newline at end of file diff --git a/nationchains/socialworld/setup/townconf.json b/nationchains/socialworld/setup/townconf.json deleted file mode 100644 index 14de3fe..0000000 --- a/nationchains/socialworld/setup/townconf.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "saltRounds":10, - "exposedHeaders":[ "xauth", "xpaganid", "xlang", "xtribe", "xworkon", "xapp" ], - "unittesting":["middlewares","models","routes","nationchains"], - "appset":{"trust proxy":true}, - "bodyparse": { - "urlencoded": { - "limit": "50mb", - "extended": true - }, - "json": { "limit": "500mb" } - } -} \ No newline at end of file diff --git a/nationchains/socialworld/objects/towns/hill.json b/nationchains/towns/hill.json similarity index 100% rename from nationchains/socialworld/objects/towns/hill.json rename to nationchains/towns/hill.json diff --git a/nationchains/towns/index/config.json b/nationchains/towns/index/config.json new file mode 100644 index 0000000..ee0040e --- /dev/null +++ b/nationchains/towns/index/config.json @@ -0,0 +1,4 @@ +{ + "schema":"nationchains/schema/towns.json", + "lastupdate":0 +} \ No newline at end of file diff --git a/nationchains/socialworld/objects/towns/searchindex/towns_nationId_townId.json b/nationchains/towns/index/towns_nationId_townId.json similarity index 100% rename from nationchains/socialworld/objects/towns/searchindex/towns_nationId_townId.json rename to nationchains/towns/index/towns_nationId_townId.json diff --git a/nationchains/socialworld/objects/towns/searchindex/towns_townId_all.json b/nationchains/towns/index/towns_townId_all.json similarity index 100% rename from nationchains/socialworld/objects/towns/searchindex/towns_townId_all.json rename to nationchains/towns/index/towns_townId_all.json diff --git a/nationchains/socialworld/objects/towns/wall.json b/nationchains/towns/wall.json similarity index 100% rename from nationchains/socialworld/objects/towns/wall.json rename to nationchains/towns/wall.json diff --git a/nationchains/www/cdn/apidoc/assets/android-chrome-192x192.png b/nationchains/www/cdn/apidoc/assets/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3d085d6452078ea66475ffc7ce794e189dfac3 GIT binary patch literal 7672 zcmXY$bx_oA6TrWBe1QW*jxMRA8$kpKIl5CCY3UT{JW@JDknV1fkUkU;R1icEknT_< zj{`woelzbM&-2VYGdr{U?C$LD=ZVwNQYI#(BLo0|SXD(q@AgFhw_td;yWWB;J^(QE zt18Iq`&;}r5Ae?zIt$(AurjtIDvAX?WmEajEplqAxOn*6uy2`7%MlSo1_V@N#O4}p zqGC4mXk4SBc(bU?u3`f|Lw)9R=s*ik3k4*cSq=q^<}bfEV9!Bo_FZ5uUS)^*Gah7% zI4ot0E%P~yTk8zbfrL~YfX6&>)fYhC!E=THsSNA_^H4|JqL)^-E(6%dgT~x6%f#cp z?>~0n%n}x~;BHpBDp)iM%bKgz-37DclsTaR3oki%g-H|6a3<&z&p>QBpy%T(%xeK@ zQd|ip4i2VF)rWC5EEj5#0L}SN(cL{SjO8~-5XK1VY{sI%0!3K3oC|ikO z$|tGmZDY>U?z^>2U~D%_nI<0Gi)aLIT0r@6@`HePkMETR76PjyAkc5*68w?-9sV5> z7EYnXqfCC+iEhyU9k%kY86Se>AC#~DmIR~#SRAd^S zUJU}VeENo4fn(<*X5dIlBCb3OYRh>`H4aHD&Vdj+%zHhj+gNDeUv)K;SBQazLMvvkV?9jW6v=7%UvmqTyX&1E!qbR;Y zCymhSTl>kIUM_M10q%x|ebDjHI=i~dUPcx))gHcl zK!#tkaAISoW*%vyBGy({e)&{N*36#(&^!`lch7?KObK;B^dkSBnMeDk5J4U*$`s@O zLaxiYE%Gyq1FYy_kGlq|N5}5O@N6iQEm501HKQBI7v$(c3?YnH4i~9j3Us!u zV(Uo)=#iGYbq94kucF}!7AZIq{XL;UR4!0r=44f_-LF^Sj| zo|!U$^DL|ZSVy?cNgfyJj1fP@(m-kP6Uc%kj_UaVi z)0hc`5&Je3RARAWh#>Xd(c+$AzkW9%#2PeKbeN>Kc@B+YeNAF$XGP73%f3SgeLeYD z3>joFhEPIXQPNsvv|@}DSyqTay%1VN%I**hE+7CJw~GZf)ak?E&^kEFO|Pl3Bl*he z=I-H;uM@XkKQCA&&rG?SMKSy2jrlyt75f+%KPlT^AiygZ(^TAV{Vp-K5VAwl$KUw6 zgtvZ5FLkLkt-gIw{3E8tR@|G<-bJ$H(@#-V#as@b6w=*!3ttL5W&Y+1NEDPLhZQNV zM_82P$hr9HXNa~X9PN{l(S5i0rmoFB+qiU5)9+MixH^fUIr_zlabjr?A_hmQP#bN>37nlTn~_)@*3$F+wOyry?9jsr*%pJ@ zIFX^=Y&2ohd$Jw!%UhB`r3vF>8zuGlLOU76zFDkwQ$%3Vxa+K0@{2-q{)NUa(3}l0 zPfSu6(dG_tdA$K1s+8eN=rZe^WtL{d*`?+V@q)~W7Utd5Vm;PNRgnjXKW_6WEQ*#i|B35Dv&Q=-UU;qmvu2;LLhpa{6P+m>{<&LlsHE zT)DH$6IQQOy$=?DHS)T)XqnYN0mUa@WmcB0L>JRyFHGvaZH;=?nelq8t|C5#Kv&8X z=sC%m?-gq+i2P>pHnOp4!uc0CM_ZBj4qJYP^*2irEa46bQhsS2SF}*u89&1yH2P#jKx1$S zj&>acNMAq48JNp3MuDD~^Zi~(S?T2GI|W6mNC36Yvw`=|V7fBL^0x4mu3(cUWqoQa zSefK6$~3YTHyFfC<1(Xp^M$*WB!%IqJ0;RkbGC}X8Iu_^eB70B*%3uf|mX4x`u zdA7?%45{g*ZqP#6pmvk%9lfD6^&LBJwpU(_i)yuK=_xW6CROmISiYLH%Qg&Xct$eZ z+pVbn<=e6y8^FLjb=0ClAUGGdkkUs*dTpVEfKsq-FdcrNW={E=N>%RGizzWNdQ(qb zv6(UxhwJ9ND@c*?r{!cOG;5 z;N<$hDb8^wnC`^eL^fFZLoH!p@s53!r@m4}0YF_ujEpAU<3v8=qbZo4q7{3#+(ZBf=Z-bzQV2wAx zLTxyj)tZFlrb6bM-o8coB<>ikc0EM{u&P$^SY9 z3g|s(ri$k578mpQ_2HkZ+Ycw!!m~>yV6q$4h+&XDuaxcqOTu|QzD2C2*?YUET_Jn`X zKbi-Roi0T0tip!Wi#MphWqu7JN9wig3tf)Y{FK+- zFwDAI%>C!1D3w~5uc!pwArQ72WH*(70@euBciQE`z8WI;eIp0dGFFPcpW;}%y7o(d zyJQSO9-HPbU5C9 zIaqk$MCs);6MrpJW~R9hkq5^qn%{ZFgwTo8X?{Bt|0tcf{alq8ChN6 z4O(4^Ab?KI_}-`{mxtd={Ps5U@3Rzzc$I$4H`x%S&6X#9Rmk5gnAoKO(s2G9}+R7lvCx4iz_h#j_F$rr?izaR5`pO^lJ$$Dt~*KqbA z9X8pQO`KScOK47Zfc3GQ=r2(uS$ZWH&dd+tS|lx({>DS`wXZW7Fe-tx{kmH!fCJe% zGaBWWj{Zhvkn~~xo7d?Be+|A>YNQ2J>cOG+)j`Bm>z2&FHYb^eZ?tPV4`kltTYq2V zK(}qTzE6{@caGI+X|l^&!IJV+!;76Te9zs_my98f zyLFd~#L!e_tl+p?QiQr>@qYFEY{4wG^h@GVPaP1R$8Z|;d^svKrL>p^wF zKa`Tj%_VU5(^2St7jw_mH1Saxtx^I4#q9O^C|bDR zk+Ss2Nu_b;b7kS!H5rA?&>lh!sQoEglX6u$qWwuj7lbQ#jLlkzH`Zg4%4k1|PM+f` zVQ3JGr(}>i3DPGZJd5^p<7lFHzVB~Y&F$@L#)p`Qge9sedfR%r$FiFLY+#5sp7ZNA9sO;hyk5K-K2EF}^ftT+)G%c6I(~1@ zKnpk@4?sm6FLq8Q`Xe!a7flM^*d&Jk9NFWD9sY2&P5l>{wpGX1LT+XHjJk!|l%8GQ z5UR3HnD(A#r?F*3H9Bn~m{ZGYvQg7bn|};0X9%58r0#q)(Y3sXV1cYPz`u!qSPTv| z`@)!09M^5Io21|oJzBJ~JcDSN>Jr*(Aw@08rOs-%BhiAeLb#Wv%pDaG=aG}Lr$;#&3Dw(MtN zbizExt*#_CW&UKUecUJi8oS|{|24a|88hO|-*O{m%=t21#7(}iutcWA;>ghM9y+BM z`fAQwA#FstKSlrHGs^S*5%q= z>}6qep^uEg4+U>^Z1ax5f~_o#k0L+-Lw_<;BfZ!0Yw4dON9yEcy{cue z`Ek-N8y4sn2%>~M)%tqv;h5};?X7sgog5{o zz$HF=2GTYX@5kJBjhU+{-A%+wWP|xtPf5{s(C-?lqzw3n4p9!M=m^9rA;0T5nL#T- z#aPp=87mTyVU}B1QLB19uI&-=_2Vf;j`Hb)iIVO{)1T_<);Zi+H9Wb*r46tZVTd!^ zC@+uNfYIWPtG1MQ;zVn`nd6MMh)|cGnWmyJN=Dz%e(r^_$n zfd;Z7vdw?PBeu=XaV@N*Kxl9JaH7=Ebum`PbVx-Qk3YZdTA+(fWWS^cw!#7N2aByz z`Kk)I``}h{N}S0{fhB3QDu1pM+QZ*Jm(*1_AxuvxSvS@D1X8S031gkZd0 z6{Vc%qwvKcShv<869OMoc9|YZXFO3@Y#EEP(*-@#fDB58qn~wH%Z8k}(hsDBVH4V4 zpWR0UnVu*;hsIJ!rxhxm#*M`GQ9dMBGABigLhF!RsV38xaUhl`WKNMIj+T}%P;sD9 zA%0S25Ygq5P8!0iapn=`K~!K;EtA-VK&gXPSRyZI`YUo~83`~^P)H;|VK2UdZ<_wX zq|A+!R@x&v!SCK6ih3rls-C43wn7F$$1rb%2|j}CgxzX{U&Qc6;XIX-r&UWm&Vi7W z`;W&`3a_Pl!MRacA1&=<$9tv!g7KXkDiVh4EG5y{2_kX{5sE7`*7nEW4c^EVJlT1X zX2W*;Hr9ePn>%tGT?S!LP8jlo60m$ zk2{qzoKHD!IN)%w*OzcQ-BZ-*z8xOAatuMwNWhgs?%yLi(0BnVHD-(lCUF-zxb@m= zKiVPf%2i~O6`ONl`_FzN&}x%E?S*a>;}GLv}%mKTT%6NG^=1IeMv#3=h~Ki zHe|$j!=V@tj1t&gfF^`;XG-h-iMjQXHPq8r+UvS8j+FTyWo&A?x>p2DqkvqI?t+Hv zI8tRnJJ3zBvEdn4$t2HdjII&r`5L$%1?3(!tqY0RRxSWO_}6l*{(rQP+p~CT9&g!O zE<;kE>Xk3YwCpb+AR#aLl(o9|7v&L!Ts)vfhLQ=_ITQ%Fr4#nyF9`EoR7o{;G?VOl z-;HPP3@S+oS7=L0-H_j3>pR+fd?%Na>c3Eug$|}hkA|0D!r+#8iZT!^t`djVnMCWa zN5b6X)zE#WUUh=E?M~B`<@9soAXQ|bdjlop9s>BlIYRJM-^|5_#3l5IMhMe0!!~&t zvJp^!wD+~!DQ+mNLqxPX6`~rY@JFC(FU7+6rJZD}?LIG5ToL#WBM<`lt&TV5M9ONA z*836xRZEGyUk4c?`fezK(rr9H=_{oBrjHe;^eGLz%Fo&Ic=tOvk3SVZV6#DfM<&55 z%fJ6uPp!6;U9Dm9J>1u?rX%#?b&AZ*16v7FE%We)8Jo~F<#H@5e9**AmX9~eFTgCl zZ;Tlq6QzT^+PiB+qmi1RO&=yJuk+_UNR_X+FeMs{Zj?hy!VarpxSY;&wY?yM_<~m$ z%_HW-{p3IVBg;JfCR{Z;XY}46EEP+rfsY)0psx!XNkShry+kPOv7obo2ejlJaMOguy<9~txQ$?0^2~`k%trdrkD(jv)8)OxioD{5kKt`cOAtR>NtH^u|WxKXMwNF-+zQnwzwXKA?r7k?ITz1dx?1hqEW=K zFG^gV38cNl1gWv?m+UBeB|5`fKu5)*6Z0wlZH-OH-n3I5aMX(ms?Ip|)gS$FJK?WY zCnsXY??Kksnm8k(Cht}U5)*`Pq%oc{TR|WQZ+Q(!@F3&(UbEIH59qAC0`S=MDtH9D zJh3eR$~w_Yj$Y1GT%eZH$_AH*l1@tu5O4WYmUR<_Gu$gB%upT#_kzjF8#nWgHZ1WG>vDJ zeFibS(!_8`%;X5c)!3&3Gi?;M!njk@?2(F^(LIQ{`*=y#oIDC7aMf&OnU`fZ5`>F$ zH%A-vwxj?7we+mN50xo)CwOc#3h-iq^}=GxZmAj$u$`J2S2_MaJX?s%U5?b zP(#KWk?w~$z0;?kB;`?9#y)=<^wz$p&Zw9Ih!ut5-s~!T&1XdhKcb+8#2`2&D&`Nl zpou9+EzgE0Gm`3nBD8XNI`_A@)CB?CHbGIQ{8CuBmdZe*1s2pi&CkdAQqw4T z`lV-C@03wY$tq6TMF#{@qPF}Zz9Ly3QH#p?J|_DDw;qhO%+%Gg@v(KC>p6}pVOKdb z_t<8C10y^jN7b=)#BsdbM%hNiPO1%`-12%+_mn z^&{t3W6c2!>dMH&!Dx*1iy#Ed3UFL_RYs6zEy^Txn1jO)-72Bie{mkwy zVrRRrgU=?)f zx8&1VGR^kY@K)()q3Af*`baEPcB5UPJBv1*+|Y!$%;S8EUevHFMK zoko85clNF7%Mj>@sy$JgFJ0U57xL|xXWc323L2R8)^Fjw|L8@>!8~KNPCtQ82>d^W zd*P0Y#busPY!;b_q^<`xay~9vH>r{;zScgscby*HS{sKH2Zc?hp;k{e@jD zpZHtyiCK~&iS&-8Yfg#5(lHTwSdk1+Xejz7w6aaAoW%6b_+v%2U$%`GTjEK%2$aQO zLcCtneO7Y5awc>TP7fzq05`S7C`0u^4J8PjrSq(V+OUh0B_dLWH1^zdrYRwHbO#Yb z{AfBq+Zks2kXkuGULX#}L_ zf6@2%t#2)sy1a*b&e{3wXYU)SrJ+m!r-lOnK=43C;Sm5p!GA&l94zp!Bd_su0AK_j zDBRceGTqL?_R`fm?_SJ+;n4kT4dGH}AyvTCRrm;fmHVpol><6OgmmP|%TP7v9Re+T z?hg^)?9K1POjt~>;+IFmkZC;3uEJgd;o&rBT#hT{ajk2 zQv;FCNP1X2HbE0nZx9OCM*LQU1=53zNEz6{LCO<}C`feoZL6(fA;z$_h+{Z zrSJyCi`2fn|{2DpTkLD1&bxCRivmwZf!~%X{e8A4Vg`B;GS&xm< z0Hgr>@R54RGj3sfNR`C?@Rr2dNRyyFiL*2W4)heolUB(DY2$6>s=d|c;CX>-!<(BY z!AJs>Qz5DA%4Kj*_aA#gnNGSIoslr0Nz$wG3P3DMr5>zDR5OoJDlM9!F83D<~ z=Ot)PM}0UtiRd^ZGG<3?;Y3sbYZsoP$FNxFtenj=PR5jXz(avMwxK=^M+oTd9Ry^l z!p~Kd3n%(OOgV28%FBjJ^Z*#b*3u5;p2g2V3F7dCg}uaCRxYc@(e$qVQr{iKLWBw9 z0Nycv&3vZ;%^%|rqi`b@c40!|T~Egsjo~!UAyFO(o{$J59PK0SFm~Rm`)c?>Fnf6< z6eU`0&X__(DZzegz2pdZ?SmNmgt3X0TgLivr1%B237|kkcq0b*ZL&pDmC5y(i~OZX zbAc*156TQ`s4dkKrV&zfTFV8`cgtAnTie)jZb9!dPVs~C$3;gT_q$%Qg` ztCn&N11^lY3WK^WjL3}XX@|kQ6cPUIz+D)W4AAH$vEX@&QVGONBK0Q@ZX+^g0M;X4 z!_*j^q3LNschr4YN;|DY8V=j+d)e%{J^`&gSBfEfNQK zHY;vkiG_3g(n<Mh}G1yn3@P^%mL zCVB{89G;cREt%THFP=PB7J?6D!Bm;5D4=_c4NG*<+dgSYDhLr!niC=U3)eU95a|u1 zdx_6#J72Tp2BWq($W{eGABYv)R)u~7@38r$Ylw+d(X{(o5*d zLmSGdwSv8`p|EJsIn9MfZ5mS31Mr^JhBG?5)aEZ;K0qO$znMB8gZJ%3WC)Y5-}uHQ zM8N*M_&RT79|u_df(?MWG=dEZ!J=VuFyIatCD* zd0{rKoBdE!@RL3QWi#@SC;cKWlQjIaPZJs+cxjX&o1TL?wBQIkK`be*(R&j!^Cyat zRVN^{K=Zs${81i>C_&@efJ?XD;NZq19dNf{`_Pu`RC^jGj2Z$^hI0j93WH8B4>=Zf zfb>~mxiCd2%f11W1`-`K^;>i~9$^dK_|!g04Yk35PrylJqp1J}@L1L=S|p+AFiX!6 zGKl+cY$}&0C_1kUVN(K(3B!kwPZI%LGIqw=CM0DH*|7Z=rXZc07x84WEdBOGhFLQT z#H*+vVI~jF?;rdHFR69}_oJAxk0KXB2h8 z5&opvNh zbo#4kq?_*v}Ul{0(Sg-4_aJ#O8c3b3z~}c_$yJk{q_UTOps|m6LjEn1yrB4j~apK+$*F zc&-+AR;nF6Fz5n7^#r>vJE`W(Ex0jE9+VpXHG>zwr;*J~|!1@EAC~bWKJ3 z>o*md-CU^(6XLzXDe)8XxRb>4z7~*{wZ9SQglvR*r=D0^H5bbMUBnrbqebK?mAzX# zSa{HMmj@0Ajs5!V8I0-~8R=AOIQlETTZ~o2D2IKYA5x6^1|cdCbA9TuyJ3ikxItHC zS@23MOIlF*rDHW$o9$S51{4+j^6b(SD7I>RM|iUdh`AvAkECs5bHWF~*pMrEpJz8e zU0??^xyD2w3X5}y8xzTeN@VZ3Bekpph?ThBZ~psMSEx>WyuT0@0oThjY2LT=m`M0` z{^c=I@NjNkGyHcghy)SPQF+AWD@qsA>|fPFK0oY-)Hs3YAKSk@0RbumO}_dV{f&_* za0X3qkOhN~N-=53>}xH!rc=^tl$GQ487+dBdGH&>&8m37149sFdFK+(i1G#qQN|*S zeHd_d@BkO3w*_=JcVP??!da6i6}uy0i`Ar{0fryfFeLw~KBD(mzzrk@fBJB38a`+A ze&Ql_Ed(Nn7$059=PmE33_45y-2+Jvea6x9VD%{4d{GEj3s5*zIK7O+SW?$d5Lh$3 z*#jpPNfgHn1|{ckvl#&!#%}&5^he3ONl^qIJ5W~+KS*OkpWK;@-NO+ zY-VLUsQLu|odJt;Zwh(9})5i zX+Uz>^V*KIk)kHUL?^5_rcNRdb>p8T?YW^58Bj(AEtTWAu&^YpW)Mc*2ntCKRcq>!+6fBEZ$XUaE6s*;7I z5b$v-lL1}D`_C9I(0oF2H~&BK5HaSc=(?iN+A%+$16?}W&TjeU`6+{RsOd&ph;fn; z1v69D%l2&@AoH2vKdnO$Cgazx&MP)?e|PK=U{|Lks8LNz03A0>DQ3L zE|#p{qyTP=n)~T3;g<#k=_g>^1I1*ofH0>|w>AsA9}IUOOD@h+XaM%lWU-y|i#vZt z->gtU@xcmFTU0iw<^!?JKA4CX-CHA_9ab1cf1Q>Q@|f6*&U84x{&jDG`8yrZ@j-86 z6D*|p-!X{x?{pPv6mI9y)%f|zrXkpDE0UsD*_DdMY>kL8y^>?gIne6|R&j+Q^CYmD9^qeiU zOOlsTjswrXZiMcqO=k~N|N9p6TR}NX$0m-k+;*)B;o##QjK*Q(@gt3Yd*DFRDdW}( zuxW|yVD~?nffoQH8xvHCR`u_5A_o{OTjBMFqL}8~0@Pfs+ns|%Xdx3Z6!TX)2;v~h z9UtlB)8so_DH-mS0OhJv>>VDM)|hJ_{$CNRpdvvi6;Yw`pwHvk{^w^Nm4M3NDOGwS z3ng%!`S&GA*pS?kwUF_tmlL*8jx%)AjHGzWjz0fev=zb~Qe@>?$ z15uv`VJ5EQ$`T(W{w9T-E+jDyftmkCWfU-2NJ>ajC;npv3k1EL z+sz8_Cs#ZO-%EzR!Q3SdPxQ4JsHh-zR6s*I18;{Vp{vczMPxra6MtFmhjV?r7I z`Erk)T}ddV{wb~l2giZ$5edJ$;kb3kmOUi?7XtwSr-lY#0VW;Lgq^t{g4Ev&h&5uq zH$hRU0V28ntGfHqfAftB3KJIMA@Yc%-EBoJlM_%n=VqjT2&r|x^Rip*pIWJ*TiT+P z%=GP>A!Al+YM^QL)1m)}6Ns+<3o6b`Ab7YlSQ4z{A z^WXJH6%c;-PTw3f-hOn0A^ER75Emny=2ZX87C}Zb(z&CeaUMr%wTlnAL0p|=lv%qVsl-yIDU6_jxT4H2Gy>X{ZD_n*x$?lV1-_MFWMxxz%01TqS% z)k~>#gBbB|;12}fk6>X}|0qQ4i-(-L+rNCu)O55sFhoQJg3Z5yn~b>%LSB*`rTqBE zY;trfCUO`JN4C$9)34t7s{qEJZ@3W#OX@xY6(QT)KsV1Pn4+NU969a(d!7q>_L{Ft z=gAMO9qaqp7jR_lkr`7h9c3O4m=l3`)r*v0v^Oo!YMT@AyY7Ls*leoV{);V0 zSQ#T@=c>vBpBea+^>15Q$o}O!rHCjaY{u`7Rg{GPoiybB60G)>zRK<=k?4;$A8z1M+(AfOPAC$Eu+hO%cs?V z(?E<7)fay=+94*4K6L8$Cus90^;vnK zrKNz{6|V-+osz-0^}i(>MAO*05-r*C`r-D3;Qn5?MD^t<&)wf_=KOOJQMu}L=JC8WQ;4U!_Kv2^i6d#%dMZoo{Q2oE(jUa*QEFT{k2pWih5BC7`x37`5Vss>$%vh4|$5@aODRO!0Js z5ILr3cUsKJ0$^HPExlX!N7AWhpYVuXmd_Y}t3rq*j$7n{njXiRe^1Fjwd~jCnRAn_dV!*# z1`Dha@v9l`qFgQ|51BHzaiiu^BH*S*>SeU;r-oij4JkfbfcIryQ0#W@H_f5;H2R3p zT>_X$$;m_a&n@N3g5Jjvzhw9LXN)*6;6T>!J5-{|LCXiXq@Pgpa=$^F=kc|c_kw20 zSE|-O$8ylvwJ1r8&@^G2j~vze=(ZNW5>EuLYf4NRQS*qQm&&My(U8RXZ zQv3l}bYb^*MXXSy$=pT)e_Z>I1=DtzvhIsCZ)@j&WX@WKJqzt~RrMdpeQ#B)BKxdL( zc>8&byU^h_EF z)3R@#v>oI*mRPZmKNjEAaoH{$^lO}H%kB0Z8+Nx46(kB4`2dd4mYiKA$Q3?~y=Rf; z0%a6g^|pByLVSNTtPbXA`k2Yh89?R)oPiQDbt z`ligmqDD4q7%ZjPwnvKygf&28X@-p7y~8nEm4a$E5c@1cXO~XVS$e&2+Ro6B_Jcp2 zP8*o!zo?Ey)eZ#57d_M8m3i6@kSi)ch(xCs_I-YZ$jmxJ;!^^cLr$8AAvcG4p4>=< zk)H2<>@@~WVDQ;tFS|QvCM@+1sB${7toyt{v5hLwyI|rb`_!rpD8xTya#T?LcAMA` z2VcYr6V)>qn85ahZ*|b*T2{pR?CI2UtDfO-{-Ztyj2lLW*<*kCwZF>SW&)|$PZwT1 zm9}BCJ+zPU`&&Z>WWW`!tVVX!xzhWyl~|8{C@6usFeC28i!k)KxTrA zky!3x>ej~>PO(DJTg<9(q(E-gy@K2ig4w$yqs?Qzn22;)OlUrHCOmu&iR8Kd{d;Lr zydliHA6-<~`h3cT#lJC3WP)54n+$jjp|LSFRTK95fu%P5(%RA;j*MVPA@h=HQz=v6 z1N;KKw{p&D= z)(f~8t@fq4>pWCpGS{2)dv(A<`J+t>|M(KOK0PIClT!$FOuj_Glx60%j9bYpwJejr9@WAa+LoyCg+T zXnj=UDe3BYXWV3{%R?G0jwkjx3`4ad>B(u1i1;$983T-YU%iSgZmQuAQ||&G0^iIa z2jcjQ`jtW_4Gck!1l&)*$4}P7)hIB2U4DMi>m+X9O(LKJw6yy%gbmJyxUH<3_q3Nn zaXR%x*{}{=s8?2>F)H3~nx@p{qY3WT>yx_<$Xv5S;`Vz{qc%I!IDs{W_tv+? zeH%VqBDb|lrTOf&aAh)d!-^a+h09DREG>=$Us7lF>zsrD71z?FHKM(HmP58=0M-Uq z^b~NO^DGA~1O(&X%KE{>$e4;QI(mqDAH)54>1vy=y-zY^>x>$;-vVx9Iy_A`UA|kW zUn)oIBUbto4&!%t=!1r_{^6z+4s+3s9p(| zh)NzyD{mQ%>8Whknppbq1#7O4U*--}`i((^j}uRDS?G`zEyzf(8upC|@gLiV;L%LW zO3*~ANW&tF4-l7e`w z8Q8_;yya0X0(tAzbhft=mTXV6;oE<*(zYjhpPt~kP#DPF3erYBPEf23%QC}r)r=|J z)0r4SQean1nC?U@Qo#XvoxpEtVV()wP5iq3=k$6xX5ST_4p&C!4W(T{VQW@wMi+~* zV0?U3d*KC{ZEJp01i|;S;so$Rj0Tb}1zKz538I@zBHw$yz)wpL<)5O{71Ivp(E%u7 zhiXDnOUEHCrBW{;sM5gX=lxvy!yct^fzt)2!!wj7CtoEmTh1c%(o8l|p$LCfUy<@x z{7x!}_3FvYB-0vx?2XoT_@Qu277Zry-S%eV9m8-yg#pv1gFIBNhK0W@W3IH`RJRtCwvi*5L&MMGPSAxVw@*34vLcA zc6iabTFy-)Z(8Tzaj{o#vH82pXS>ctkQWYEYARy2&}(u`%3t6u{T9Qj;v@^+wg`m& z$u=O}GnweT4!S1JE5l~of>tU1qd|Rmgi9WY?l-g9VW%zZp87DajUt*w;lTU1w$Msz zHvz&tT%<0#b!1;dz~Zv$3bz+-RfAPmYk83KZL_t}=5}^w&BV1c9T5{I^6bGI8i$&& zdct`zbE^xNu>=$s$|Ym+8yNUcg>6<$!6F;y2a_-a^(*kRxa5xwcdnGrC*hK_)uO(( zL_!|)gh`SMZke7K3g@|C>Q)tKIWQ0{ePw%0? z;)zP3VO+p-?Gx&}b1T^klE(KA?rNXf-uh$kFjaRng;L&i!!X03j2D3e7>r@Ia^IVn zwqR*9-B)ec^46G7a7Bd*Wc{@Pj;=OBQ_Vqh`d4_!(I|cewb9DY_y-#&?2NLPJ;#o( z9?$8CNl$0Ky0a~w5@)41F`s_&I#7)MV)TjoI)SDf4i+aMhb;IIW#XT>@;GHlwA7Mr zpv!x&yxQ`C103km3@UsQvDO)C{hP!DD0m--9LYAIUDW-m6R7n@sXh)zsEJEN$kTwh!5N^GqH^GgQvU&9%*%>z;pMX!d@apNi@KQxO6QBIzVA_7%NXqHf!1Cn z!G{7r5fVZA6RU!52)AA|^#a9?c$nQiGlmZ{{FO>i1PWr_;AyX23{0*X%aA>zGSn{}M=z+_D+g=Cfs5zf=g1$MWAD;A zAz$Cj%E%gp%QuAx&5UJavwVHpod-SqpwD;IY-d8{Yw`zK2gz3fW>(88+5Y!>%LXg%?U4cJUd7w~ z@})0MPd{13OK2~=zBZKUuOIzI1sYTt_V&h?EzaXsr=OL8*HtCwj9|xC_rcPY{_DZy z%lp}_%g(v;HoLY4acsKW;bvG3O2K{IPOfh%A+s8WxZdlW83CZY&fgYOYri+)u_AmC ziTBGucYOuFx%J)?Y$N(7Uc~k`O4i*soRALH>t8@xua)?>H;+JpR zm{a$1ddoxRZFS+O_0aNmuC%bP(0Ai%WhTKt>4iX*f#bRoqKRoF+Nxp7nhdadP6v9H zoazc5tGCn~9F+<<3UDfX(pEqOEICn6LPW^z`w}P6#<6BbD|)TNCc1>foLq2Wi>v$d zl5Wgq7$FA(S|A8hUygrBW6-TB*6_&nMWNTUMe6qFs+ki`JT*w}{%6UK+EbG61rQ%h zln3yGqCzxEne6Ofyc~HXHKccUb>hNxWOpH%b(bf_GdFNn3{uBU8A!c^(0ID!n!8wE z!x8_z69i(ch4q2IU##yNEy7qP%X24*krEkkOCat`;h0XA;{Oc6MB0uwbZl|Dye(cM zM~+8Rj3^Y^E{`UVK&wxOH|YuD%Qjm+&d2bll0SUm+I2sms<_1W`c(7rf$KRR>-@ZZ z5)@@RliYyOM^N)8>-N$2ln9JPKXJlfYeyWi?P~daKtK>r&?cxz+Net=g$E>RJ_Bs& zl=M$H85xHu`v<+aRDaX=^M4r}s~Pr@&uO`hNRiPS1&d@_Lrn8AWh4~Az%S$@J5o&1 zed1^zR*Gr`5~pYdx(o!^$$-x|RHtrCSYRtGkq8sf{SfIjfcPV92?>g#(f@MERG#dW z(&e>wi2ey;4yjLEdGI#6=|_=h2jxSTF6%8uGx@5}o7D7D-|ATREWP5Cmi{aN@4KOW zoFp}Zmdz)y`K9r)OvUQejOg>U|TzNhmgdgvv$?m%zWM(FiWQ!&h1kc z+&2o&{qwvHYXk!X5`?^N=Y5&Ii+VI@# zfeRR59|x!!;HU(-fFM)#QghXI80#X}Btx$vy4c9DZ9`$?>(@s`)oaDCJ;WP`j=!6P zt)3}z4K#ma!$e+vIjZe86KH zu$wNo`rL!x+p~LsCWBdD>f*{iq5Jr%yQA??$hRyVOwsA;S*s#0Qg0HkNfm%oGuVEk z#@MzaGxU&oZE9{dxAYxJK4D-xl@s5sa*~`&#A7dCn%)=FJ??RkKRaBGfW71bq#1;+ zKw{3~Y{5ZWRKFaEZ*RCA*g{eLx@ZE7MBDf_vZxF%#VT^Zi1kb69OpoGVA5$~U6*By z3%SE?3NxjE$m1!7`IL>Mjy=yhJ&&!K^_+^}7S?!PaIg%y6kWE-#6Q&MlZ(;ENdY|c z%t16n+Bpk@XzjK1t`6*z2~CJ^V<(8Ux}+t-I}UJhOFId9e|3I=&+NeXZ;xJF9i# zX?9ocvnCJ$w1oV96M5+c+d0l*>k6^=RwkJ0es=c_U)mA{73%drTbJ2M@}JW36YWmVTqxw68xU|^wJ}jD{-Uc%TK$W$m<%1>vKqxuX|JLu^0l@?Bat<#xY%_x)i>3IF=nhZEm^EQbNYmLh;TASYeDU_n@wazW%&5yj% z#T)z^-uwNVn=VU5%gVx=s!d^V><#1%7U25AZ<+)!%Xjac* z^0a3Zn5ccN9#sHkjYYi11_nB!7vp8?aMZC`SrJgRVUc@}ivTZv`>bXF{ni(Ztp32b zpIm8<@wjgzSf{iEs_U@Q#;%dSo0;y7om=oVRc~?ABegtOI5<}7RkgN%e>0W2F~+2L z@#$hN-@DFL6{7&qdOd~P{pa)6+3($-Xk4UV)US6OR^g;pC`zfyFmWo~< zZC7z3P9)6mBXEv-Hw7HFS~cTxyEAA<6Sd}tffGMMPY%gZ*X>zF_KDlYM*WKkAnfdN z%!XEN1e+`A3K|niCv!Mm%BX{Ico8G-t2)yD7K^j*1$7WPK<+U0@e(n36*{-hnvhTz zE;;pu#y~iBK!r1Z{b$HlQCUysAP-!Z+8hqB#+i01S(>hK0uw!eB^_V{KSkWy0u(ZZ zi>QfK=nGg{4eT*dIdIh0xP+qHyzAM1;yql-@$NRTmONxO;99d{*V_T%m)8+C1?D?I z>o}zNBX_@tlkbP%LpcPMRNU$}&Bx3dNzx&RBZ= z)pM&vl<3NLl<(4iNMAnJfcJLPqN7v3eZz0CrneCZV1;{0X+@r`z>!RGAD5NZaI*(4 z=D7JWL2j`jvIP&d50mU)dhR77Ms5b#$544WDNR|vaWp_l*2=_DsgALaeYi z)}-94{;|KbzqSnPS8g&W9b4I#7c`k}`gcF$#5@8NaI{AE-RwHCcl)*csYc$>^*~c0 zGxr(YNORwXbAB-5rTgB=*M$kh0a%#U!?%Q-?1Q$_4fIGdTV(7}<2>@71nd)~5sQv? z7%Sk-9WJ!l8LHcc2`pIZ5yp4WZt_eu{c+GeokYI_2Lk3V3GW}~5_&xexLojrC z#61n>XlH;yT4DQcJ9xF*cINb%!|4QCHDj{&dT_MCvQEI-|KzD0a8tea|H;&Pw)hn+ zMYi9zDwEo+PMH2OUCl~A4%FZ6*fDdc#e~6uhhsOL#lyt^jVy)CC5>XrQ^7_y-5(+IOb9}lWAAkINq51A*C4{+=>3@(Pqbc-RPOM zU-sZ@bGo*cj{W?9k)s3vCnM@xSzBz3vf^u_Ox__XiWhtr0_U28Um~Gb4QR|LWqs+# zKB=D!ZXa5qJ`0I0#S`qx5O#kV$k74P9!LqB9sZdLw5Aa*Evd(^ivID|d+y+}@`U3Q z?6u7P&MQbo34rsj*GvF7uV=hu!kFQPb7cRBO7{D_su4=w+M&B~@efChY@mvr$$Zrt zk_&7%JeT7&HTl=KIdMnsv&D6o#$ZL8)O0deH=AzQM09DyaOp7|_ZG5R?#Mtvd( zj<%0k#=+bZSK;v5j%?yU+`s;J13f_|5I=GE27~boyh7bA@EVe;gEE@Iue_D3LZ6Ph zNBjrCay24akKGfS(b#JJVe=|QpRP)qKb0Wwo-DgHFeNJnU8^yJRT#T*&XqKSzjU7)Mf}tetpKJEs2cyYq8?^CZA*F)GM)Q~{!Vl=@hWJOk1FVGvlX6g@WPl!Cg0 z(3H2k5=BolA4m^j>j-njLp6jPck6!;cH3+oEz5)$zxd z9tHv<-Nv-=g>V(b@nK-!yu<$67CTeZpz~GU@{uRndWgvS#Z;rT?5}wIAnA0es57sg zy_CT2J@CRneW~+Jp?gKBScOg5bJK4h%Ix+>wg=-&A*1sgAa&C=f7x)-=ArVTuxwZsO!;K5UM*}j!_ zRwTEs$Wgjy7w-Cz{h5G%19|1}o z$(8*?Ms)qRjHk1m@COs6;i{?&3f!ep2GP~Qu9HS!^C%K5?z8msvD$dWAOZLU^3l~Q zQZI0NW#bR$0znu)Ar3(M(QZ7_?9vsUr1Ogpp4?aUu346^X~@;ej(q*Cn;h68F>A8t zx!2alxwbBACDOEo1{pf}?A?!#Z^nU{S1i2ooh5}wdwywcqPJnxdYn<}@=_elcaO9j znMk@Ts*cj)O{lLxw&laSO_QT<3+&DvsYdn1p^jZbAnA^IoOn;!>>KbM?-$nv9iOe0 zS(yxyrs%EC_(OgpIMCXOzsp}s})nD<))H!U%1~}DhJXb zrRmZHRY$w^;s&E^$`X}9W7UF|JCM>snpq;yn~_tgV9G8Eve0tK$c6{Kouv2U9LGb!Ed7HGN?&@)AIkdr)V(0?)PKIm-M z{HrfJ>`&@m$HJn$uGQjh7$-0=tkuzH`EhA-(#GU{S@F=i3}vdCv32nW*|`u-K+T_4 z)wNy=j^qHblsjd{B@Vdid+ zm)rFU`~rrb+kjOUciXmD``(arQJ~iwF`vHvz{$A}CxI?t0x6WG=%TYyg;Zf8y;+NS za%yUz@y+P}!rAZ^Hq%?5;blS2#v0+R*#5^0bA1Qy0&|x3m=AxN38cy1iAJ%M1hT^Pcja=cpU4??v*t3#@$k z6yI}QW>Y#d{_PiZ2aEk(xdZy2w}u4Fwk2M@?d7p{iIM~a^1eUTGz|T z@tQ{qLpjH+2zqx{++fCqv+1YcLB~YATU@;oB$sdX@WU?J`^BnL_H4w&xNa>zs}DDx zPbkS^@jWuY$Ak8<&ZK&Ibqf7daQr+lgmcC zV}t$Ig(rj$acc4a9LSp?zC${+!%oTS9$3L&ss7MC<>pl|IxXsIB#-Cz^>6|W)H(u+ zI;Tyd4!RUDa<-!pE-$e71lxCNsdD8GsH?=S6Rk zgCEH;On7S_Y)b#E!?;$<7jp8y_$i1skKce~C(?u%^WgQb;WoYm;8!!-#T-`~hjA^^ z@89TF-tiHwh^`>uGOqtxS-`RWUe>?egwXq27cN-Zp7Uq}hB?8HnA5y1@Jxz6oW{N6 z!b8trC(A^w^b+XOgx49ILoU`b%e`Di`DkPz-QiY+fb*eUiX?eIEW~r+wacb%5ww6Y zxxuAgn*Doil;6?wz`aQ5ytE9BtfS;R>$La&oB&T3gR=(2-2awp^i6H}oNxy@OFo{( zL@#M4w1z3+;h=NQYL2jT?_p?P^rCDSm_~vu$@Xj1e&YZcuxQE9?O^7BD2Ka5e00_^ zu_cNM!I_uRu6*_u6?>IVzM@rUVs9?du74)3LOhbM&DxuF<>7?RY^NLMt#TU8d2xP^vl0y;XlZ-ML zJC86M>miE(?{7xO^z4`xIqRJbFwa~Efq&e?4va(uEK|-kQ2zjOb=eW#03lw6L~yL_7L(oCs^o?jaHM|lBl%zwu)Y2XrN{EOn#;tKi^7ngoUlOdG6C zf#H=r*VJ|%v#Uqvd2A-5k4~zkZr5{>FN7 z0o^s`;x4D>C#1EIpwh&Cr;78gylM2$UGS@ z<8XVa4af#t2h7BdhYmIJtdU_f2_CNZ)2t+P&T>`3?EALjX+UgQV@7;#W_NANvzh9Da#t#tx;sfF#p%>Y-eKn&)?GXsR8ppm z!xsY!f#o+sPMOk$+;Q(?(f<5vC0UO__&V{HT=s>^Ao#iH(MQQ7n?H+98li{-2EBgt zo4rl+ZfAs9y#$GSlOe&_c>_uhS1+k65G)Gl79WSIhcEb2gB^pJRf~va22uK3mj|iO z7IwgJc!;l=$_4M$usyA={dJ_a zL7Om+7Ys%43%Z@}NtgnQU$Q9MUlPXtXmb17F8<&qftEjN#ZeoN{}D(7mFK<1`fC9l zkUF~_XvFUaavaKm&E?>1T)p%(F_)9IztfBv==(sGNDXy8%B!d6eC&;8 z8+0G4LNEq|Qz4duH0lKEJuN`ba$G498}w!U-z>n_w`p~sn?TOW>ZF@I=0I!1Sk-9Z z>{w|ktLYwQG!*eOpLD!YI!MTNB0#NQ8mDPy__L4nrb)0nnAMb24u&yXsQrEt0<(r) z6*g^TP*;Oy9@l(Vw+z3c>1UVlUM{4D)0?rRfI;n#(VxbE!_x_n6?rLHLb6%}2#A$e zAJvzwh=J2Teoec;+VNO(-0d`)5Or|6&M=cQPbQaX0{l3d?J=$D_$SQ|`nUS`9P!RR zmz8`~cL*-DZeD5iNOt{b_|liAR{xY5!8d%8)<{te&6uOcL`qO4v#Wmdr0lUB30grzqCk-2?Yi!b22ADOJ9bTp?OA!EZxtMzG2F8B=`tP989 zX0v!XG&+`p>>;y2N8VGC_>9?mI~mCP4nw$Oa{EtRajR#h$)|lfWvu7+eraLsJsA@| zU1Q!nnE8d#=&j@dqu7>6f-)Yq^s-)oD1-4gf=_=>Drm8up<|NyOgvr($?UCI(OAsy zs`{DtroU0psH{w28?_}*CQ&09{Y@I1(*$_reX%IJ}ti;*h49Y~aww)bS~?D_mhI7Uyip6mDar z>O1u@(P9n#-A_C&aGUv*pa6&fvWeyKw9PvH&JS(3rDiDskL*`J|F&Bm!SR_%>VEFD1(w__vJ-Lq|)SfFF)V#JTFF`W(y~I104e*=m zDq&CGrQ`8?oWQrsex{M{-<;nKc&~C<3T~w6#}@&*b=$!=Bx74b}l#8_Tu^)U5w>`5)h z{&D~*FPZ9>CedJy42=sJQDR~}_^DF~gh9Oezc|0^I|iHj&(4t)6=zDjCu^($Rn$?Q zO{*f{>bV^KjRCNO^~D4iU;efA_5+9j+o~j4DH1`$Yv76KO@o;%PpQt&_gM9rS3H-c%3%3(D za+R4usO(Io_mrZWqyac%cA03icRIcF!&Cm}2ZBemTp2)(Y-g!2ytd?g~!>$zuF z=5Y`k!wVQhqFT;|%FQ2OnX6iCwr1XyRH10p2EYkd>Sa+Qb z*i2e1MDEB+F$#qGN(Jb$L}-)LMF19nNs~N3ESF=eGihm0s(`gw z1D8M0!w+@Ow*X|Q3T(awxdF!V+Y#zAoJ^&3pL~eArtn_0WqMox)b0HC+1BY2(p##f zbfq*Q&K_`pJtU+F;&{g~ z45T^PtJHIsNs}ATHL_WyO>=k#ib691ruO-x$E1L~{{q*nA?!jNuK(<+c-K+;)s2OG z6(oUMTdP<&z-{ezB)M>=*>i7lUCYHBafNTs;mFr^9@c{(wVkKa31<#y%Gft{#A2|5 zGi=u}aOpJ%7Cn^}PyF;l%K6d$T|Pk+fcMgg(BVT0`TYqGz)0VWF#IoLi)*g@N<*wf|Lll?yPp_3XFN8z^{g}Ibi#b$tmdQC5Ab-MG-AAM6k0NHW~ zklHh&lTZiZq>fl9G}rIN30NrD=?whO9 zf|AqCRA*y<=3QVK!Bzns=SxoGH9o?7ihVQC_+3qRkb4-7a4|9)gC7rR{nFAxieJqlh1HS`Adm>-L-(kozmkBpR z@lprJaWK@kTHO6#ik40-<0YDy*PoFj^bOXUnneRxVY`@uK^&t~iB*Sys-{{F2M0UZ z>MyzLt^JZeshcRE*hdK)7yxl5(AAAP(B{~#`neNhcYb`WVRCfWczJV!#t42yhETSMPcQh39s^f_I5_-F7_M zgM&fDBjNpUd>O24SU9@*}(jM$qq6t-xC3=8j`|2o-T zTs@Jy4#-qYXAGD>?GRl)nI-8X$@AW~k5{C2CN;LXjd9R-u0`QoFmP(s4-^410r+>K zxK}Blb7yEdh2kCOY|nbg%&m3k*etw9Ch3j zPplYL{Zt2T9rB78*uZP@;6CBulY2)4q@o7dpyz|}iHzLhdOnGF^-;tpegmutdyD;L zZxti}!z8fUzRg|A*_C15?PGu!`RrU({_tAQI~9<>irc9s;XEKOa>GX`;<>kIg6dby zZ9iQxzg_>{gz?4AmC?ZSEXdeKDVf;kcHHU5VQ>(Lw? zeUmcYCc^Jka38}09p!;&Z(KvBx|9S9VZFN6Kn*bLk8ec*3i@0BW)~jVE*BysnJm9E zqld-D;H1s3R;w$Kk?%CHA2xfoCErbv$@^rO^k$K^Ahy^oQ8Zv>=7&l5&_S+1Pm)fm z<1{mngy6qc1zWOZld3=Br^7iM*6}t|^nT{ud5kh;>HGX*a zpy6Q!Y1@Gk;;}D>Cv~L}AaIlIx^F+vTX1hSYQbYGWPG+95T4!ckx{kBzHvp~u)+h-7{%Pnn-v7YS#j;-2XIBgx`?!=ZLDqAuT^+@H)ML=RS-<;pFrL($=Fb zXX@`;3^^AYkn1*FO8DHip^r{$)9$y382MuU97BR!l}0e_;I{&BTki<)7Vh;0N7rXQ ziT)pwz7h}G60k$CT(zJ;Z1ebGS33LC;^!Qp1W&c~E>1W$u9at1f6sZlN$L$Q4tpSr z2I3-3J8AdY{I$uYNy|>HehNtGvHHJY`+a>0tE8;^aDRJ5I4hv#9?5iywa3UU4$L>a zDRuedRF;~NQOI<6(aBl3_)wU1qGLW@OJ+9J=jW`DS}S%BG-zPgL(KQR+{TZqal^PL z2;!L8B#ImgaL-qw(zI%}8>{YV_+_jerx!r0u|2hVV8E)oS*6#HjgKhw8+DQbU?%H3 zy@-iLye|LMkjB8ZT*%3nT|W2yfYiP6$fwOkZ4T#CSYkZx=ZCiK#h#gaZoJ8^UgU(% zCBf<&l~ZZF<2E`pcc8bDru^k$V0DT0{hNS3h89^Cv9;nVfK$l(P(+!@@ZKZ}>h10_ zAKG#nG~L_20Cm*{>(AIdI*_0h?(A@#D67f*S8A)LRrjsV+NJHx#lW#IX3f-O1u%e# z7u!I@Cel*E6UI<>d@2SNN-5GQ{k(o;rz3I8VaK6BJQ~X=&Jy+8aZ}iSCtx`tjA!sc zSg&=ZpS}WnutylUBCbja^y$7&11aXfcw3I!z;s9#IGuKheI*#Vl{YA%9e9Jnqe)`E zzqa7GpDua5UugZ{h94Z!FAU$8M9lAq>K(7YqEmMP4*H08Nb3o3fVUU*e%M~>BAB81 zG>A*`8PQmS(TNTx)yqdgsSE4Ri+c-v=iVOt5#5M)ml|3|nayo1uDx8plT|k-2&|P| zU4-trBG?)aHT;|G8em^C?Q)2R*dY0DQL=&7eiL?qg~YRy+(o8xr}rBue@5I-aGH;T zd!C!uI&Jipq&M5otV|Rk%v_wx#3KV@sj|ENPzt9T75XbNP8C47c;sR!(%^)0?O}_L zH@Ojp9e!$&s}A+}8c<#%@hN{bQK8Xx%1!VE4XRe7*gcfW4bk~|64FQ_y^W(Wg&&Ox zk}dx^MZ#{adH z!e6^F?{8yaX=b2s{*s1lu+rV&z3CEmb%e{k&h14krL%`Md+4akafh`~TX!orkiGsI z5kSOR9gkQ11d=?z$XzNL0qZ9~3RA;Ap+Rwuq4j|`Qd%AWO0+yOE=;jrZ%@WWa=|RHKW`2}R zkH73)Qcd}}48%m`*zG~^WC}|#0aLQ6{0=}S$-aMy*aECTba)avOKxrr3dC%{@HzQ)deqMhic)$=(ZH6Jq(?tk ztW4l4Z?qZthwC#zeK1C1cb;|9=UuKz*`D68L_bGiey7RY-j%s5K z71dV9e;%b}>x!^!@qW*1w?WC}+5@aD*1zp({1UeHWTMZxA+>V&CbkAAZMPcD<0=(G zZ^^*SeY(Z{uNPr8LW^NbC+QJAReQt|ZP&lIR#)x+S>nt9j0KCn1@Wa;B@d7sxZy8) z56I6U;}tAPS~8~>45Kxmyf&CEN%+R>qs70qr4dDEX`Cc}Tj#Vrbc-{wyZiJ@l^3oI zE}q80K1NI1Ke3TC1=d#n%MX@XL9#|xrJE6Cm~cr)r<(A#i1L^v$;#j3VjcN6IAX50upEPUsC)b?br=g4UHv*oc( zct00>KM8ewi-_k`=0M1#Zvv8FEw3$Q2izV5b;>hL5Pn>X(HP9)j+_|bwXLY}0R^;oz#kzFr0T~sIvh3LE)^2`xW{KG}Uhx7r2aGNpaaZPwYhh0v5yop( z@4!9tL58FCGWqOj8CCqaDhGH zOG2D>HXO9a3bUCyy}}VG5u)mQC!N-xfujEo=CWO_fCa$1UhGz}v)jiMG(Y?;$?Fbd zScy;NrAu8UU+{DkY0*rmPWG4eK=U2MTiXVvqC>c+-_MfJy;U*)jJV#=DyOsL3*g8P zPVhJ_G9&b@P!0@$`#x4%(hOG5iIz^sKPPDUV|bC(U}x6rQ`! zB{z@Fd{6*`CrfXxp^iS7hgCiSSJ5HgKw}!mxRXaj0bL%YlaH$xr2S60&te5vwT;g9 zFJ_bvG1VZ7-ZaD{7t`*@-7;4|dG0-{m`Wno-}`cxUuYiCq8=;bT-m1fp0f;1_}fnf zowPxpc@{B|$t-s@wHv;@$lkPE1P2VD8m8>`h5QVxI1ZF(?XRlc1_z);2Zf<>9&17y5<3y$}+~*P>Z3+((C>?cg!R;_pu*Q?l#4=Jw`C8 zoh0*K2gDQ&@nZhk6u`27ZzaKpbkvEr)&b)!J1Kd#mhCSHoaCvQlxZzXA>0?xg&|ZH zgFnb2RxKI$cgyMR&Uw<#Y2?6MEV_5#Sop-GM6h&m6L#CBZDlg5AQ6F|p;hWkoBGaM&|aM;nv+LE8E zx%uw&=nK7V!{Cz*06$p@US;rvA8;nLgQVa)*|Pl{68xGKA%jTQkr>C3!w^8OhL_N& zn`EDV4@(;HS=h^}i+B{#ISb}k+9#rm{x{nyq zm>@>;KHZq0^N*}=ktA$IqepfvA zqcK%_YONd|SDdT*7+O^{dp>cVxculfvSUez5SIMe9vS#Ri$i{h=s`6K)%#H-z9RIi<9<@B*DGK2Mg51aG|ED4$x+^_{}_ui$HQ9LO2jF94KidET;dbk%L2; zj9*dE7VSHRrlBSb@+ivMgQrX@pBP*B1)*9U^%wud<`j|bnBI(x z%`j{ttzgwc5jYBv)+umfyj``ZMgM8(6tczx=Up%z^}!_*^1WL_8%zI2C~TD9%JMf5 z8NHOYB4+xh?<4kj-8PL4I&b?J5LaC+z9W1dG(ecJdYhUhRo{hZXjX%u21kIDGELi~ zDqpio`E|a|2m4RHp;I_28F@&Nry5a8Dws}5R4QeY_K9Utsxn}<5JM6_;-w-7dp5*i3 ze9j%l%BYC{1Q&@Sj;EN;3S^=yhf_Zk+$ciMdipQk&Yx555$Urv)yS>wCKoR>c&Q&dH|-|j-Se^@V|fv~sX4}CBS-eYAqfgyuVhkn8$^ckU4 zdDODKL!lxCaTVTDYcu(e^_ji$zd>IYPUq22bM1HPeNT`6{qK92zsC3(wT;k|hRGZs zgD_B>bThbL>uuci3aZ>4l9-yk;HuP{W+>*q>Va(za$|E`Fj2X?ZK&g>*WE37=!H?) zL%vF5J-rE0#jAEu1xUgU6gHKi4;w_-LV4|sif0Im`rvBxWVY2vjt*20YsJ*AyE7I- z>wq~XD0{)q^WEjVDb(z8!R{<6A8y>wlFbk)~N57>!n$2VmY9d|Lvlbila zkES|=(~Mu(`mc!@(mx{2ap%;0#8aEau`@6RT~4_It3Padu(718$v_=pay@3p-Wzew z2x67xv_MKA~m&j9Gh+uqE_98J07O-*ue@4hvnQ6GN_%*YV zcR=ti1YOHT|3|>Lg1rxgVcULd#{dNp*+a2;NqxME&Y+RKGv%}#LX>0iT^_4QpiHCd; zmwpY-nbA08W%TZy+`qkZfG6I`8k;TVThiJ&C(=6r@wifDAJv$j_tPnPU9Iggd1V&U zW+1Y=@r($n^1hQAm$S;$;-7fAGY7D^Sfbk<%?ftKAj0o>`mkkvGa>1qs|^wfA1}?G zbZd#sXd9`%fSH@_2v2{tH-A1rlk@%Z{YaY7`W(Sf*B^`DJzFy5&q$y!7p(M`7E%B2 z8{{ynf%hf9uB$iAS)@(jLKrSs4`0G|S|b)tu=38)t^8C%PIh^EWoCt^)R04^0@}r- zJd6Z1xi>DY0x1$Y=IMn=ZI!W68X8ee4*gi*EWvOrtB2ua{IlK3MuY&YE7o2&xtbEf z{*GU$hC|av_rGP#7J(82QE zMd|$z4>kPv2~^f-^Pw2+Lr!s@pia)krb{=m5t+7J0=nx%?Z?OSMXYGQH~1v)T3dOF4O;wGi5h3Nr~01Jo2t@Gi|@S2^2U%|^HTELgxKq<)GRs*)`dCASJ#X9L{h zOE(3xA;Z>tI>mSbWBC42=>uk8qrrE@e%8xPrAn?ZL!CbHVT{&53%1Ou@Yt{p((j>xkTnY@PUzuU_!m~J?@CW z{7AN+Y|y8)k;fSiL2YG0vdH?fm$n~~%pItO@g%ognO1P4HiC^6nY;LenVDQ2Ams4R zD(_3IipW1Qk3KwyOA{JJMe8rKJt@6^IR;dn^lKjW<~hq>&3#Xy7j(*FG(3l#{cK~= zSC3yw%ZDu2-?})(Mzq&sB!)`V-eRX?x*TB&xxPGgdS+wMIxYJ=EIYtYj7g!(j6^(N zjhpUj4h*hUo+eifsM_?tJ?DxU=^;D@lc;Zf5Ii{@hlt~c7kXS7idZPy+6v|}W`*yB zA32RKMD5GTAWHa$1a+qRVNC0)Bbi81lsax$?RIUVqXItEwzqBIMO)iJ5_q)O$8*L6eyQB27>OZ^m6sovZ0CMl8Xj+kH}-Y_P8b za^DbZ;=4ZHCw~nFZ!`o8JVP(637)YUwQ+Mv*#4h+O31rzV`<&7^4Gqvg{=*`iF1Nv zk>_-Or;g|x^Wezx@?9+#q0h#(C7r+LuXZLQ%%M%Ks%9o9Hr+uEXq4T(qqAbUneI2B+^N1L=|P1)FO`M@3A_ABCfu%`KSR8K$eWxYW4)uq0TEjFQNSbK zy|+R)&dg=LLhilp?3A&N4|&Oa^ho|rOkJEDn}psG{;;`2`syl>RQLh~@l=uuWT4kM zTLAtSX(n5a4-r*$sgrJIgb8@iNSLf#Mjz6An7?(}Sy4OCXh73I#M*^#t$;k2e0`m{IB19PTI!}LM(&@IdKbJHV&>pr=|niS__q> zNe+u%+EL-$f%s+JP-;kI?(-ekbZTwh_-nM&3w6T$%X6qLF*9pvBQ!yEKFQ z<|=$iV}_UGM~dRtj-&{$7c0Xccv?)h@9SYnKAY{}ux_qCbmX43J+@l+TI$Co|N z6JyGtLHzOF^|Q*_W`vbtRm=EW@TzzkSYKR`8@9(YJ$F72nJ^CM1AY_Q#OF`q%+;NA z@XFAE48sh3`IhAG%^NBy!&zG*BPl?LdTjgsIuZ3rf^O2#Uvz)&vzYhaj;5n}YR}po zp$REk%5rFu_MI{-6-A)CLWoO&7v_$=?COt+g~+QbFwVd~Jk0AYiUkj0+*mOwN_yQ| z+yO_Wc322zq0$1;sNevxh_E+YC6}X3r>bm0Sa4YER{r{EllK5LAyf@qiQ|bA@@JlM z33{|J1*}A?zxhL6qkXZ5Nnh$HpyBE9OK)YDpl5HJqSMET9FZ3e*l6A=|0R-g9m96kp}HGcS~}@H^=})|K**Wu-;3b zt|5?sUf}prMDQ$|!H$XcW60HB>_<1gUO|}2rlHZg0%!wSiODr`2V025fhc2E8|Xsh zy9?S?^{zukFJ+N`Sj!5n(QW|5OgA0AC@7WdkYof`7@nI{Iz8p?9eRU?v&$il0niSdh=r za(zbs2Au-UJlvy{WD6ZjFbu#C87ryC)B?o^@Fl;NL#WPsXZhV){PeOz1&L!NU_?wX zrI?`Sh7GwMCkA4S%I zQsZvc8v%cA5ls5ksFB-gYXa^@J*bSH{tYZHWjlJe8+>uTWd~i_IXZw;RQ5*If6je} zpU3Umq}bYUG4PN- zIWC2gtgWJ*Z8mS{#^eXayny}u&uS9}_Xyabh8D5@)w0n5aja#l{-J(-HMCz4xyEx? zFq*7d^-Icw$H`ei8|vvBPXccDE0+AS^^^WPFg!v7hV!Iz+75;${9L zeqam_%-1-kZs@U5M=bplC!YQq4`6KKW{e58*oh^GkNaPViimSj#1T1%sz#J#h$w9_Mfu*R?-F`+PO5LG{2E%cCBIVvTjK)th0c zkw*dh(1dl)QG7MF@jmsDXB*X*y#^`*aNT>vclFdiO^Z;oE?Jrq-3c|uos7)pG28jI zVp+3sOAD6mT%1m)Uz8bMD~BQ%Ni$wlVi1EzbR*xct?Q>|3)NUl}6SMAMc5bxr8gx&f?8)By~?LZxaoye`|z~A8SW2` zIWIi@8eA(Xa%_hUQB#~p*)Y%{>_JZ@4ET~QKTpucd=61*_G9LFuh0Sn3r2{=uFZJl zSl}A4=DaqXe1e=81wdj6p0QW$O{g5LHz= zaXR+tgSyBu&rE#B&($&TzE%9~15fN)5G7zCXq~)S<+n^F-@MLk#avc4zo2D*VtJ2f zp+s6LIiUTVuQ{$&f#m0&7tOD!dbqUYkp#_S?#nxo8tg~gAI@;58s6l5S7USXT?v$= zpd0sGyHV^>$suzk+Vh%FPhESFrSd0J(+s(fh5CiWsYZYMAxZ~j#ydOkndoQ(FEDm9 zdYU>Blte23cvjcICB`0&+Ovg<;3cCRv+TcGhmM)Iku1Z4;z6ZZ%jFfAcYcn7U#FxE z{s#{ni-NE_pCZ&T0**&oL{&9VUZ_a@bGpv3zrCi<_Bj%w!8YO8o{lMujEBGz zznI73Olxf^bd8X$Vl=}$-T%%6f7-;8QY|4JOOU<^mcg#DBwq|JB*)~N>&jK<&BcQ! zj7`0u7Pg)j1$V*N^Vz5WOmWL{F^%)LX)w80?OPx4o9|93H=Tzyqs*EGwiv^ViHj#^1e(--(>^f30Rpjm7mMUzCd&uoC zLhqu*NME!?*WXm(p2T&~)!g)zw*)6zEZ78|UW(bIq3)j4lY8c|Pyl9fE<)m_fzk@0 z0cyhNLZ=OT^CnLm8MZ@YOSD?NG}>{y2g7VnS@E@Xx7D3K30GzzljAVxu}(CDHnJ@i zC)&mF4)M6u5q{|%iQTKB>q`-Oqfy{pVqic`)XanSp_w}L+2g_N`4`tpk9i`h^d&J* zUw6Rv^mc+{7eu%QEI0Wk>k97tmgp*t+Kbykp9~)qLC#yQ(oh%dJ+xE(YmZ|o5}zso zZJz7@iljd5+>;-auQFAVp~uskMGFGy0O=o z`;5SY#RZMOl_VfM{kpdr#6HRUyUPN({i-S;)Q>(wB6LXqJApSv@*fY}J+o8Bt|P}F z$qr|utZd;XwTM3#Zx<`RI${5q|2U8PiN5+oVEmMRl89mwYKdARs%+~>{o{ScZTD2d rWyZ^Ks#49Ys^qazBCv`F!x6fH8v9SRgEQrzw1 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.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 td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.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:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.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:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.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:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.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}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;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 #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.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:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{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}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@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[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}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:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.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>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#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:#eee;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=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-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,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{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 select[multiple].form-control,.form-group-sm textarea.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{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{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 select[multiple].form-control,.form-group-lg textarea.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}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.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 .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{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:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.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>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.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>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;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:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{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=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-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}.dropdown,.dropup{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,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px 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{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{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 .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{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-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=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{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-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-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){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:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-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: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:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{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>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{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-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{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:focus,.navbar-brand:hover{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{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{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,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);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 .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{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{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@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:focus,.navbar-default .navbar-brand:hover{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:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{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:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{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:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{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:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{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:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;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:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;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 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:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;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}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.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.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-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:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{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-body,.media-left,.media-right{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:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.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: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,.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{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}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:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{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:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{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:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{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:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{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:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.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>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.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:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.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,.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: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:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.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,.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: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:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.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,.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{border-bottom-left-radius:3px}.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,.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{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 td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.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,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>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>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.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 embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-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,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-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 .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .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,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(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:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;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:.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:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;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,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.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:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.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:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-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,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{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}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row: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-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-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}td.visible-xs,th.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}td.visible-sm,th.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}td.visible-md,th.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}td.visible-lg,th.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}td.visible-print,th.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}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/nationchains/www/cdn/apidoc/assets/bootstrap.min.css.map b/nationchains/www/cdn/apidoc/assets/bootstrap.min.css.map new file mode 100644 index 0000000..0ae3de5 --- /dev/null +++ b/nationchains/www/cdn/apidoc/assets/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","dist/css/bootstrap.css","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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A,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,EFCJ,yBCzEC,Ub2zDC,WACA,WACA,WAVA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UcnxDI,MAAA,KDvCL,WC+CG,MAAA,KD/CH,WC+CG,MAAA,aD/CH,WC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,YD/CH,gBC8DG,MAAA,KD9DH,gBC8DG,MAAA,aD9DH,gBC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,GFUJ,yBClFC,Ubo+DC,WACA,WACA,WAVA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,Uc57DI,MAAA,KDvCL,WC+CG,MAAA,KD/CH,WC+CG,MAAA,aD/CH,WC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,YD/CH,gBC8DG,MAAA,KD9DH,gBC8DG,MAAA,aD9DH,gBC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,GFmBJ,0BC3FC,Ub6oEC,WACA,WACA,WAVA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UcrmEI,MAAA,KDvCL,WC+CG,MAAA,KD/CH,WC+CG,MAAA,aD/CH,WC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,YD/CH,gBC8DG,MAAA,KD9DH,gBC8DG,MAAA,aD9DH,gBC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,GCjEJ,MACE,iBAAA,YADF,uBAQI,SAAA,OACA,QAAA,aACA,MAAA,KAKA,sBf+xEJ,sBe9xEM,SAAA,OACA,QAAA,WACA,MAAA,KAKN,QACE,YAAA,IACA,eAAA,IACA,MAAA,KACA,WAAA,KAGF,GACE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","sourcesContent":["/*!\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 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 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 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 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 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(\"../fonts/glyphicons-halflings-regular.eot\");\n src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\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: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\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: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\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 \\00A0\";\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: \"\\00A0 \\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 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 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-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: 700;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n opacity: 0.65;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n background-image: none;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n background-image: none;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n background-image: none;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n background-image: none;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n background-image: none;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n background-image: none;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: 400;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 400;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-right: 15px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-right: -15px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n padding-right: 15px;\n padding-left: 15px;\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777777;\n cursor: not-allowed;\n background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.42857143;\n line-break: auto;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n font-size: 12px;\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.42857143;\n line-break: auto;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n content: \"\\203a\";\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// 1. Remove the bottom border in Chrome 57- and Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n//\n\nabbr[title] {\n border-bottom: none; // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*!\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(\"../fonts/glyphicons-halflings-regular.eot\");\n src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\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: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\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: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\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 \\00A0\";\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: \"\\00A0 \\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-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: 700;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n opacity: 0.65;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n background-image: none;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n background-image: none;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n background-image: none;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n background-image: none;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n background-image: none;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n background-image: none;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: 400;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n -o-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 400;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-right: 15px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-right: -15px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n padding-right: 15px;\n padding-left: 15px;\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@-o-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n -webkit-background-size: 40px 40px;\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777777;\n cursor: not-allowed;\n background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.42857143;\n line-break: auto;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n font-size: 12px;\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.42857143;\n line-break: auto;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: -webkit-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n content: \"\\203a\";\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important; // Black prints faster: h5bp.com/s\n text-shadow: none !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n}\n","// stylelint-disable value-list-comma-newline-after, value-list-comma-space-after, indentation, declaration-colon-newline-after, font-family-no-missing-generic-family-keyword\n\n//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: \"Glyphicons Halflings\";\n src: url(\"@{icon-font-path}@{icon-font-name}.eot\");\n src: url(\"@{icon-font-path}@{icon-font-name}.eot?#iefix\") format(\"embedded-opentype\"),\n url(\"@{icon-font-path}@{icon-font-name}.woff2\") format(\"woff2\"),\n url(\"@{icon-font-path}@{icon-font-name}.woff\") format(\"woff\"),\n url(\"@{icon-font-path}@{icon-font-name}.ttf\") format(\"truetype\"),\n url(\"@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}\") format(\"svg\");\n}\n\n// Catchall baseclass\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\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content\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\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// stylelint-disable media-feature-name-no-vendor-prefix, media-feature-parentheses-space-inside, media-feature-name-no-unknown, indentation, at-rule-name-space-after\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","// stylelint-disable selector-list-comma-newline-after, selector-no-qualifying-type\n\n//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: 400;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n padding: .2em;\n background-color: @state-warning-bg;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: \"\"; }\n &:after {\n content: \"\\00A0 \\2014\"; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n color: @pre-color;\n word-break: break-all;\n word-wrap: break-word;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n 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}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n padding-right: ceil((@gutter / 2));\n padding-left: floor((@gutter / 2));\n margin-right: auto;\n margin-left: auto;\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-right: floor((@gutter / -2));\n margin-left: ceil((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-right: floor((@grid-gutter-width / 2));\n padding-left: ceil((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-no-qualifying-type\n\n//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n\n // Table cell sizing\n //\n // Reset default table behavior\n\n col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-column;\n float: none;\n }\n\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-cell;\n float: none;\n }\n }\n}\n\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\n\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n overflow-x: auto;\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * .75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type, property-no-vendor-prefix, media-feature-name-no-vendor-prefix\n\n//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: 700;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\ninput[type=\"search\"] {\n // Override content-box in Normalize (* isn't specific enough)\n .box-sizing(border-box);\n\n // Search inputs in iOS\n //\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n -webkit-appearance: none;\n appearance: none;\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n\n // Apply same disabled cursor tweak as for inputs\n // Some special care is needed because