From 5118436ee65a704bd8dffb9b0864432c01a36139 Mon Sep 17 00:00:00 2001 From: Jeff Thomas Date: Wed, 11 Aug 2021 08:27:46 +0200 Subject: [PATCH] adding the code form moose into the repo --- .gitignore | 19 + README.md | 1 + configuration/META-INF/context.xml | 42 + .../WEB-INF/resources/apps/fr/icons/icoca.png | Bin 0 -> 11509 bytes .../resources/apps/fr/js/attachments.js | 65 + .../WEB-INF/resources/apps/fr/style/style.css | 313 ++ .../WEB-INF/resources/config/license.xml | 18 + .../resources/config/properties-local.xml | 99 + configuration/WEB-INF/web.xml | 376 ++ configuration/info | 2 + configuration/sql/dropdownlist-create.sql | 42 + configuration/sql/dropdownlist-values.sql | 556 ++ configuration/sql/mapperdatabase-create.sql | 7 + documents-explorer/pom.xml | 67 + .../documents/explorer/ApplicationBean.java | 102 + .../documents/explorer/bean/FilesBean.java | 127 + .../explorer/bean/UploadDocumentBean.java | 70 + .../documents/explorer/bean/UserBean.java | 41 + .../src/main/resources/application.properties | 6 + .../src/main/resources/log4j.properties | 13 + .../src/main/webapp/WEB-INF/web.xml | 70 + .../src/main/webapp/index.xhtml | 110 + .../src/main/webapp/login.xhtml | 70 + .../webapp/resources/css/bootstrap.min.css | 7 + .../src/main/webapp/resources/css/style.css | 24 + .../webapp/resources/img/file-download.svg | 1 + .../main/webapp/resources/img/file-upload.svg | 1 + .../src/main/webapp/resources/img/icoca.png | Bin 0 -> 15936 bytes .../src/main/webapp/resources/img/icon.png | Bin 0 -> 46052 bytes .../main/webapp/resources/img/trash-alt.svg | 1 + .../main/webapp/resources/js/bootstrap.min.js | 7 + .../webapp/resources/js/jquery.slim.min.js | 2 + .../main/webapp/resources/js/popper.min.js | 5 + .../industry-application-for-membership.xhtml | 4967 +++++++++++++++++ exported-forms/readme.md | 1 + integration-module/.gitignore | 19 + .../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 49502 bytes .../.mvn/wrapper/maven-wrapper.properties | 1 + integration-module/META-INF/MANIFEST.MF | 3 + integration-module/WEB-INF/ibm-web-ext.xml | 14 + integration-module/build.gradle | 32 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53637 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + integration-module/gradlew | 160 + integration-module/gradlew.bat | 90 + integration-module/manifest.yml | 9 + integration-module/mvnw | 233 + integration-module/mvnw.cmd | 145 + integration-module/pom.xml | 84 + .../src/main/java/hycom/Application.java | 25 + .../src/main/java/hycom/FormsController.java | 155 + .../src/main/java/hycom/MapperController.java | 67 + .../src/main/java/hycom/WebInitializer.java | 14 + .../src/main/java/hycom/dao/BaseDao.java | 27 + .../main/java/hycom/dao/BaseMapperDao.java | 27 + .../src/main/java/hycom/dao/FormDao.java | 446 ++ .../main/java/hycom/dao/MapperPublishDao.java | 116 + .../main/java/hycom/dao/MapperSubmitDao.java | 218 + .../java/hycom/exceptions/DbException.java | 10 + .../src/main/java/hycom/model/Attachment.java | 68 + .../src/main/java/hycom/model/Document.java | 59 + .../src/main/java/hycom/model/Form.java | 80 + .../main/java/hycom/model/FormsResoult.java | 32 + .../src/main/java/hycom/model/User.java | 33 + .../main/java/hycom/model/UsersResoult.java | 32 + .../java/hycom/service/DatabaseService.java | 133 + .../java/hycom/service/TableNameParser.java | 74 + .../main/java/hycom/service/XMLSerialize.java | 47 + .../src/main/java/hycom/utils/AppUtils.java | 33 + .../src/main/resources/application.properties | 14 + .../src/main/resources/context.xml | 32 + .../src/main/resources/sql/create.sql | 7 + .../test/java/hycom/FormsControllerTests.java | 55 + integration-module/web/WEB-INF/web.xml | 6 + registration/pom.xml | 58 + registration/registration-doc/pom.xml | 19 + .../registration-doc/src/sql/create.sql | 9 + .../registration-doc/src/sql/prod-data.sql | 5 + registration/registration-form/pom.xml | 189 + .../dell/form/dao/MembershipTypeDao.java | 23 + .../eu/mooseinc/dell/form/dao/base/Dao.java | 67 + .../form/dao/impl/MembershipTypeDaoImpl.java | 35 + .../dell/form/dao/impl/base/AbstractDao.java | 114 + .../dell/form/entity/MembershipType.java | 66 + .../dell/form/entity/Registration.java | 203 + .../dell/form/entity/base/BaseEntity.java | 68 + .../entity/query/MembershipTypeQueries.java | 27 + .../exception/DataAccessObjectException.java | 40 + .../exception/ObjectNotFoundException.java | 40 + .../dell/form/exception/ServiceException.java | 40 + .../mooseinc/dell/form/model/Attachment.java | 104 + .../dell/form/model/ErrorMessage.java | 29 + .../dell/form/service/CaptchaService.java | 21 + .../dell/form/service/MailService.java | 41 + .../form/service/MembershipTypeService.java | 33 + .../form/service/RegistrationService.java | 30 + .../form/service/impl/CaptchaServiceImpl.java | 75 + .../form/service/impl/MailServiceImpl.java | 109 + .../impl/MembershipTypeServiceImpl.java | 51 + .../service/impl/RegistrationServiceImpl.java | 91 + .../impl/TemporaryDirectoryService.java | 43 + .../eu/mooseinc/dell/form/type/Entity.java | 37 + .../dell/form/util/ColumnLengthConstants.java | 29 + .../dell/form/util/FileFormUtils.java | 58 + .../controller/ConfirmationController.java | 30 + .../RegistrationFormController.java | 173 + .../form/web/conversion/DateFormatter.java | 39 + .../conversion/MembershipTypeFormatter.java | 37 + .../resources/ValidationMessages.properties | 24 + .../src/main/resources/default.properties | 18 + .../resources/embedded/tomcat-context.xml | 10 + .../src/main/resources/log4j.properties | 14 + .../src/main/resources/logback.xml | 21 + .../src/main/resources/spring/beans.xml | 27 + .../main/resources/spring/configuration.xml | 22 + .../src/main/resources/spring/context.xml | 38 + .../src/main/resources/spring/job.xml | 17 + .../src/main/resources/spring/mail.xml | 29 + .../src/main/resources/spring/orm.xml | 56 + .../src/main/resources/spring/thymeleaf.xml | 46 + .../src/main/resources/template/mailForm.html | 54 + .../src/main/webapp/META-INF/context.xml | 5 + .../main/webapp/WEB-INF/spring-servlet.xml | 12 + .../webapp/WEB-INF/view/confirmation.html | 39 + .../src/main/webapp/WEB-INF/view/error.html | 33 + .../webapp/WEB-INF/view/registrationForm.html | 183 + .../src/main/webapp/WEB-INF/web.xml | 15 + .../css/bootstrap-datepicker3.min.css | 9 + .../webapp/resources/css/bootstrap.min.css | 6 + .../src/main/webapp/resources/css/style.css | 73 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../src/main/webapp/resources/img/favicon.ico | Bin 0 -> 1150 bytes .../src/main/webapp/resources/img/favicon.png | Bin 0 -> 626 bytes .../src/main/webapp/resources/img/icoca.png | Bin 0 -> 15936 bytes .../resources/js/bootstrap-datepicker.min.js | 9 + .../main/webapp/resources/js/bootstrap.min.js | 7 + .../js/ie10-viewport-bug-workaround.js | 23 + .../resources/js/jquery.iframe-transport.js | 217 + .../main/webapp/resources/js/jquery.min.js | 5 + .../js/locales/bootstrap-datepicker.pl.js | 17 + .../src/main/webapp/resources/js/utils.js | 4 + .../main/webapp/resources/js/validator.min.js | 9 + .../resources/js/vendor/jquery.ui.widget.js | 572 ++ 147 files changed, 13773 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 configuration/META-INF/context.xml create mode 100644 configuration/WEB-INF/resources/apps/fr/icons/icoca.png create mode 100644 configuration/WEB-INF/resources/apps/fr/js/attachments.js create mode 100644 configuration/WEB-INF/resources/apps/fr/style/style.css create mode 100644 configuration/WEB-INF/resources/config/license.xml create mode 100644 configuration/WEB-INF/resources/config/properties-local.xml create mode 100644 configuration/WEB-INF/web.xml create mode 100644 configuration/info create mode 100644 configuration/sql/dropdownlist-create.sql create mode 100644 configuration/sql/dropdownlist-values.sql create mode 100644 configuration/sql/mapperdatabase-create.sql create mode 100644 documents-explorer/pom.xml create mode 100644 documents-explorer/src/main/java/eu/mooseinc/documents/explorer/ApplicationBean.java create mode 100644 documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/FilesBean.java create mode 100644 documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UploadDocumentBean.java create mode 100644 documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UserBean.java create mode 100644 documents-explorer/src/main/resources/application.properties create mode 100644 documents-explorer/src/main/resources/log4j.properties create mode 100644 documents-explorer/src/main/webapp/WEB-INF/web.xml create mode 100644 documents-explorer/src/main/webapp/index.xhtml create mode 100644 documents-explorer/src/main/webapp/login.xhtml create mode 100644 documents-explorer/src/main/webapp/resources/css/bootstrap.min.css create mode 100644 documents-explorer/src/main/webapp/resources/css/style.css create mode 100644 documents-explorer/src/main/webapp/resources/img/file-download.svg create mode 100644 documents-explorer/src/main/webapp/resources/img/file-upload.svg create mode 100644 documents-explorer/src/main/webapp/resources/img/icoca.png create mode 100644 documents-explorer/src/main/webapp/resources/img/icon.png create mode 100644 documents-explorer/src/main/webapp/resources/img/trash-alt.svg create mode 100644 documents-explorer/src/main/webapp/resources/js/bootstrap.min.js create mode 100644 documents-explorer/src/main/webapp/resources/js/jquery.slim.min.js create mode 100644 documents-explorer/src/main/webapp/resources/js/popper.min.js create mode 100644 exported-forms/industry-application-for-membership.xhtml create mode 100644 exported-forms/readme.md create mode 100644 integration-module/.gitignore create mode 100644 integration-module/.mvn/wrapper/maven-wrapper.jar create mode 100644 integration-module/.mvn/wrapper/maven-wrapper.properties create mode 100644 integration-module/META-INF/MANIFEST.MF create mode 100644 integration-module/WEB-INF/ibm-web-ext.xml create mode 100644 integration-module/build.gradle create mode 100644 integration-module/gradle/wrapper/gradle-wrapper.jar create mode 100644 integration-module/gradle/wrapper/gradle-wrapper.properties create mode 100644 integration-module/gradlew create mode 100644 integration-module/gradlew.bat create mode 100644 integration-module/manifest.yml create mode 100644 integration-module/mvnw create mode 100644 integration-module/mvnw.cmd create mode 100644 integration-module/pom.xml create mode 100644 integration-module/src/main/java/hycom/Application.java create mode 100644 integration-module/src/main/java/hycom/FormsController.java create mode 100644 integration-module/src/main/java/hycom/MapperController.java create mode 100644 integration-module/src/main/java/hycom/WebInitializer.java create mode 100644 integration-module/src/main/java/hycom/dao/BaseDao.java create mode 100644 integration-module/src/main/java/hycom/dao/BaseMapperDao.java create mode 100644 integration-module/src/main/java/hycom/dao/FormDao.java create mode 100644 integration-module/src/main/java/hycom/dao/MapperPublishDao.java create mode 100644 integration-module/src/main/java/hycom/dao/MapperSubmitDao.java create mode 100644 integration-module/src/main/java/hycom/exceptions/DbException.java create mode 100644 integration-module/src/main/java/hycom/model/Attachment.java create mode 100644 integration-module/src/main/java/hycom/model/Document.java create mode 100644 integration-module/src/main/java/hycom/model/Form.java create mode 100644 integration-module/src/main/java/hycom/model/FormsResoult.java create mode 100644 integration-module/src/main/java/hycom/model/User.java create mode 100644 integration-module/src/main/java/hycom/model/UsersResoult.java create mode 100644 integration-module/src/main/java/hycom/service/DatabaseService.java create mode 100644 integration-module/src/main/java/hycom/service/TableNameParser.java create mode 100644 integration-module/src/main/java/hycom/service/XMLSerialize.java create mode 100644 integration-module/src/main/java/hycom/utils/AppUtils.java create mode 100644 integration-module/src/main/resources/application.properties create mode 100644 integration-module/src/main/resources/context.xml create mode 100644 integration-module/src/main/resources/sql/create.sql create mode 100644 integration-module/src/test/java/hycom/FormsControllerTests.java create mode 100644 integration-module/web/WEB-INF/web.xml create mode 100644 registration/pom.xml create mode 100644 registration/registration-doc/pom.xml create mode 100644 registration/registration-doc/src/sql/create.sql create mode 100644 registration/registration-doc/src/sql/prod-data.sql create mode 100644 registration/registration-form/pom.xml create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/MembershipTypeDao.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/base/Dao.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/MembershipTypeDaoImpl.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/base/AbstractDao.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/MembershipType.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/Registration.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/base/BaseEntity.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/query/MembershipTypeQueries.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/DataAccessObjectException.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ObjectNotFoundException.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ServiceException.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/Attachment.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/ErrorMessage.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/CaptchaService.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MailService.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MembershipTypeService.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/RegistrationService.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/CaptchaServiceImpl.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MailServiceImpl.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MembershipTypeServiceImpl.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/RegistrationServiceImpl.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/TemporaryDirectoryService.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/type/Entity.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/ColumnLengthConstants.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/FileFormUtils.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/ConfirmationController.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/RegistrationFormController.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/DateFormatter.java create mode 100644 registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/MembershipTypeFormatter.java create mode 100644 registration/registration-form/src/main/resources/ValidationMessages.properties create mode 100644 registration/registration-form/src/main/resources/default.properties create mode 100644 registration/registration-form/src/main/resources/embedded/tomcat-context.xml create mode 100644 registration/registration-form/src/main/resources/log4j.properties create mode 100644 registration/registration-form/src/main/resources/logback.xml create mode 100644 registration/registration-form/src/main/resources/spring/beans.xml create mode 100644 registration/registration-form/src/main/resources/spring/configuration.xml create mode 100644 registration/registration-form/src/main/resources/spring/context.xml create mode 100644 registration/registration-form/src/main/resources/spring/job.xml create mode 100644 registration/registration-form/src/main/resources/spring/mail.xml create mode 100644 registration/registration-form/src/main/resources/spring/orm.xml create mode 100644 registration/registration-form/src/main/resources/spring/thymeleaf.xml create mode 100644 registration/registration-form/src/main/resources/template/mailForm.html create mode 100644 registration/registration-form/src/main/webapp/META-INF/context.xml create mode 100644 registration/registration-form/src/main/webapp/WEB-INF/spring-servlet.xml create mode 100644 registration/registration-form/src/main/webapp/WEB-INF/view/confirmation.html create mode 100644 registration/registration-form/src/main/webapp/WEB-INF/view/error.html create mode 100644 registration/registration-form/src/main/webapp/WEB-INF/view/registrationForm.html create mode 100644 registration/registration-form/src/main/webapp/WEB-INF/web.xml create mode 100644 registration/registration-form/src/main/webapp/resources/css/bootstrap-datepicker3.min.css create mode 100644 registration/registration-form/src/main/webapp/resources/css/bootstrap.min.css create mode 100644 registration/registration-form/src/main/webapp/resources/css/style.css create mode 100644 registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.eot create mode 100644 registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.svg create mode 100644 registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.ttf create mode 100644 registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff create mode 100644 registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff2 create mode 100644 registration/registration-form/src/main/webapp/resources/img/favicon.ico create mode 100644 registration/registration-form/src/main/webapp/resources/img/favicon.png create mode 100644 registration/registration-form/src/main/webapp/resources/img/icoca.png create mode 100644 registration/registration-form/src/main/webapp/resources/js/bootstrap-datepicker.min.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/bootstrap.min.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/ie10-viewport-bug-workaround.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/jquery.iframe-transport.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/jquery.min.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/locales/bootstrap-datepicker.pl.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/utils.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/validator.min.js create mode 100644 registration/registration-form/src/main/webapp/resources/js/vendor/jquery.ui.widget.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2aaf010 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +*.sw? +.#* +*# +*~ +.classpath +.project +.settings +bin +build +target +dependency-reduced-pom.xml +*.sublime-* +/scratch +.gradle +README.html +*.iml +.idea +out +/configuration/tmp/tomcat-orbeon.zip diff --git a/README.md b/README.md new file mode 100644 index 0000000..40c7f4d --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Source code from Moose for the integration module between Orbeon and Bluedb diff --git a/configuration/META-INF/context.xml b/configuration/META-INF/context.xml new file mode 100644 index 0000000..87b1b23 --- /dev/null +++ b/configuration/META-INF/context.xml @@ -0,0 +1,42 @@ + + + + diff --git a/configuration/WEB-INF/resources/apps/fr/icons/icoca.png b/configuration/WEB-INF/resources/apps/fr/icons/icoca.png new file mode 100644 index 0000000000000000000000000000000000000000..3d47c224f22b6a0cf6416b4c759cf23f94e2e1e4 GIT binary patch literal 11509 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 literal 0 HcmV?d00001 diff --git a/configuration/WEB-INF/resources/apps/fr/js/attachments.js b/configuration/WEB-INF/resources/apps/fr/js/attachments.js new file mode 100644 index 0000000..1dd32e2 --- /dev/null +++ b/configuration/WEB-INF/resources/apps/fr/js/attachments.js @@ -0,0 +1,65 @@ +if (ORBEON.jQuery(".fr-mode-edit").length != 0 || ORBEON.jQuery(".fr-mode-view").length != 0) +{ + var xhttp = new XMLHttpRequest(); + var url = document.URL; + var documentId = url.substring(url.lastIndexOf("/")); + xhttp.withCredentials = true; + xhttp.open("GET", "http://192.168.0.167:18080/integration/rest/form/issubmitted/" + documentId, true); + xhttp.setRequestHeader("Content-type", "application/json"); + xhttp.onload = function (e) + { + var disableSubmit = (xhttp.responseText == 'true') + if (disableSubmit) + { + //Below is for submision button + ORBEON.jQuery("#fr-view").find('.fr-submit-button').find('.btn').each(function (i) + { + ORBEON.jQuery(this).attr("disabled", "true"); + }); + } + } + xhttp.send(); + + var xhttp2 = new XMLHttpRequest(); + var url = document.URL; + var documentId = url.substring(url.lastIndexOf("/")); + xhttp2.withCredentials = true; + xhttp2.open("GET", "http://192.168.0.167:18080/integration/rest/form/hasremovedattachments/" + documentId, true); + xhttp2.setRequestHeader("Content-type", "application/json"); + xhttp2.onload = function (e) + { + var hideDownloads = (xhttp2.responseText == 'true') + if (hideDownloads) + { + //Below is for download attachment icon + ORBEON.jQuery("#fr-view").find('.xforms-output-output').each(function (i) + { + if (ORBEON.jQuery(this).text().trim() == "Download") + { + ORBEON.jQuery(this).attr("style", "visibility: hidden"); + } + + }); + //Below is for remove attachment icon + ORBEON.jQuery("#fr-view").find('.xforms-upload-remove').each(function (i) + { + ORBEON.jQuery(this).attr("style", "visibility: hidden"); + }); + // Below is for upload file control + /* + ORBEON.jQuery("#fr-view").find('.xforms-upload-select').each(function(i) { + ORBEON.jQuery(this).attr("style", "visibility: hidden"); + }); + */ + } + } + xhttp2.send(); + +} + +function hideSubmit() { + ORBEON.jQuery("#fr-view").find('.fr-submit-button').find('.btn').each(function (i) + { + ORBEON.jQuery(this).attr("disabled", "true"); + }); +} \ No newline at end of file diff --git a/configuration/WEB-INF/resources/apps/fr/style/style.css b/configuration/WEB-INF/resources/apps/fr/style/style.css new file mode 100644 index 0000000..da03ec6 --- /dev/null +++ b/configuration/WEB-INF/resources/apps/fr/style/style.css @@ -0,0 +1,313 @@ +.fb-main-inner .navbar { + display: block !important; +} + +#fr-view.fr-mode-new .xforms-control input[type=text], +#fr-view.fr-mode-edit .xforms-control input[type=text], +#fr-view.fr-mode-new .xforms-control select, +#fr-view.fr-mode-edit .xforms-control select, +#fr-view.fr-mode-new .xforms-control input[type=file], +#fr-view.fr-mode-edit .xforms-control input[type=file], +#fr-view.fr-mode-new .fr-autocomplete-container, +#fr-view.fr-mode-edit .fr-autocomplete-container, +#fr-view.fr-mode-new .xforms-control .xbl-fr-number-visible-input, +#fr-view.fr-mode-edit .xforms-control .xbl-fr-number-visible-input { + display: inline-block !important; + width: 40% !important; + vertical-align: top !important; + margin-top: 0 !important; +} + +.xforms-group input[type=text] { + vertical-align: top !important; +} + +.xforms-control select { + margin-left: -4px; +} + +#fr-view.fr-mode-new .xforms-label, +#fr-view.fr-mode-edit .xforms-label { + display: inline-block !important; + width: 30% !important; +} + +#fr-view.fr-mode-new .xforms-label-50pr label, +#fr-view.fr-mode-edit .xforms-label-50pr label { + display: inline-block !important; + width: 50% !important; +} + +#fr-view.fr-mode-new .xforms-label-100pr label, +#fr-view.fr-mode-edit .xforms-label-50pr label, +#fr-view.fr-mode-new .xforms-label-100pr .xforms-label, +#fr-view.fr-mode-edit .xforms-label-100pr .xforms-label { + display: inline-block !important; + width: 100% !important; + margin-bottom: 12px !important; + line-height: 20px !important; +} + +#fr-view.fr-mode-new .xforms-label-100pr .xforms-control input[type=file], +#fr-view.fr-mode-edit .xforms-label-100pr .xforms-control input[type=file] { + display: inline-block !important; + width: 100% !important; +} + +#fr-view.fr-mode-new .centered, +#fr-view.fr-mode-edit .centered { + text-align: center; + margin-left: auto; + margin-right: auto; + background-position: 50% 0 !important; +} + +#fr-view.fr-mode-new .big-logo, +#fr-view.fr-mode-edit .big-logo { + background-image: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCYRXhpZgAATU0AKgAAAAgABQEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAExAAIAAAAMAAAAWodpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABR0lNUCAyLjguMTAAAAOQAAAHAAAABDAyMTCgAAAHAAAABDAxMDCgAQADAAAAAf//AAAAAAAA/+ECxGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpleGlmPSdodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyc+CiAgPGV4aWY6WFJlc29sdXRpb24+NzI8L2V4aWY6WFJlc29sdXRpb24+CiAgPGV4aWY6WVJlc29sdXRpb24+NzI8L2V4aWY6WVJlc29sdXRpb24+CiAgPGV4aWY6UmVzb2x1dGlvblVuaXQ+Q2FsPC9leGlmOlJlc29sdXRpb25Vbml0PgogIDxleGlmOlNvZnR3YXJlPkFkb2JlIEltYWdlUmVhZHk8L2V4aWY6U29mdHdhcmU+CiAgPGV4aWY6RXhpZlZlcnNpb24+RXhpZiB3IHdlcnNqaSAyLjE8L2V4aWY6RXhpZlZlcnNpb24+CiAgPGV4aWY6Rmxhc2hQaXhWZXJzaW9uPkZsYXNoUGl4IHcgd2Vyc2ppIDEuMDwvZXhpZjpGbGFzaFBpeFZlcnNpb24+CiAgPGV4aWY6Q29sb3JTcGFjZT5CxYLEhWQgd2V3bsSZdHJ6bnkgKG5pZXpuYW5hIHdhcnRvxZvEhyA2NTUzNSk8L2V4aWY6Q29sb3JTcGFjZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0ncic/Pgr/2wBDAAMCAgMCAgMDAwME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) !important; + background-repeat: no-repeat !important ; + height: 80px !important; +} + +#fr-view.fr-mode-new .small-logo, +#fr-view.fr-mode-edit .small-logo { + background-image: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCYRXhpZgAATU0AKgAAAAgABQEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAExAAIAAAAMAAAAWodpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABR0lNUCAyLjguMTAAAAOQAAAHAAAABDAyMTCgAAAHAAAABDAxMDCgAQADAAAAAf//AAAAAAAA/+EEt2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpleGlmPSdodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyc+CiAgPGV4aWY6WFJlc29sdXRpb24+NzI8L2V4aWY6WFJlc29sdXRpb24+CiAgPGV4aWY6WVJlc29sdXRpb24+NzI8L2V4aWY6WVJlc29sdXRpb24+CiAgPGV4aWY6UmVzb2x1dGlvblVuaXQ+Q2FsPC9leGlmOlJlc29sdXRpb25Vbml0PgogIDxleGlmOlNvZnR3YXJlPkFkb2JlIEltYWdlUmVhZHk8L2V4aWY6U29mdHdhcmU+CiAgPGV4aWY6Rmxhc2hQaXhWZXJzaW9uPkZsYXNoUGl4IHcgd2Vyc2ppIDEuMDwvZXhpZjpGbGFzaFBpeFZlcnNpb24+CiAgPGV4aWY6WFJlc29sdXRpb24+NzI8L2V4aWY6WFJlc29sdXRpb24+CiAgPGV4aWY6WVJlc29sdXRpb24+NzI8L2V4aWY6WVJlc29sdXRpb24+CiAgPGV4aWY6UmVzb2x1dGlvblVuaXQ+Q2FsPC9leGlmOlJlc29sdXRpb25Vbml0PgogIDxleGlmOlNvZnR3YXJlPkdJTVAgMi44LjEwPC9leGlmOlNvZnR3YXJlPgogIDxleGlmOkZsYXNoUGl4VmVyc2lvbj5GbGFzaFBpeCB3IHdlcnNqaSAx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) !important; + background-repeat: no-repeat !important ; + height: 70px !important; +} + +#fr-view.fr-mode-new .main-section-bg, +#fr-view.fr-mode-edit .main-section-bg { + margin: 0 !important; + display: block !important; + background-color: #C7E5F4 !important; + color: #657C8B !important; + width: 100% !important; +} + +#fr-view.fr-mode-new .sub-section-bg, +#fr-view.fr-mode-edit .sub-section-bg { + background-color: #D8E7EF !important; + color: #597688 !important; +} + +#fr-view.fr-mode-new .sub-section-bg .xforms-output-output, +#fr-view.fr-mode-edit .sub-section-bg .xforms-output-output { + padding: 5px 10px !important; + font-size: 13px !important; +} + +#fr-view.fr-mode-new .main-section-bg .xforms-output-output, +#fr-view.fr-mode-edit .main-section-bg .xforms-output-output { + padding: 10px 10px !important; + font-size: 20px !important; +} + +#fr-view.fr-mode-new .hide-label > label, +#fr-view.fr-mode-edit .hide-label > label, +#fr-view.fr-mode-new .hide-label .xforms-label, +#fr-view.fr-mode-edit .hide-label .xforms-label { + display: none !important; +} + +#fr-view.fr-mode-new .hide-label.xforms-control input[type=text], +#fr-view.fr-mode-edit .hide-label.xforms-control input[type=text], +#fr-view.fr-mode-new .hide-label select, +#fr-view.fr-mode-edit .hide-label select { + width: 80% !important; +} + +#fr-view.fr-mode-new a, +#fr-view.fr-mode-edit a { + color: #006498 !important; +} + +#fr-view.fr-mode-new .xforms-hint-appearance-full .xforms-hint, +#fr-view.fr-mode-edit .xforms-hint-appearance-full .xforms-hint { + display: block; + width: 100%; + clear: both; + margin-top: 0; + vertical-align: top; + line-height: 14px !important; +} + +#fr-view.fr-mode-new label, +#fr-view.fr-mode-edit label, +#fr-view.fr-mode-new button, +#fr-view.fr-mode-edit button, +#fr-view.fr-mode-new .btn, +#fr-view.fr-mode-edit .btn, +#fr-view.fr-mode-new .xforms-output-output, +#fr-view.fr-mode-edit .xforms-output-output, +#fr-view.fr-mode-new .xforms-label, +#fr-view.fr-mode-edit .xforms-label { + font-size: 15px !important; +} + +#fr-view.fr-mode-new .xbl-fr-section h2.fr-section-title, +#fr-view.fr-mode-edit .xbl-fr-section h2.fr-section-title { + background-image: none !important; + background-color: #006498 !important; + padding: 10px !important; +} + +#fr-view.fr-mode-new .xbl-fr-section .fr-section-title .fr-section-label a, +#fr-view.fr-mode-edit .xbl-fr-section .fr-section-title .fr-section-label a { + margin: 20px 10px !important; + font-size: 20px !important; + color: white !important; +} + +#fr-view.fr-mode-new .fr-repeat .fr-grid-body .fr-grid-td .xforms-control input, +#fr-view.fr-mode-edit .fr-repeat .fr-grid-body .fr-grid-td .xforms-control input, +#fr-view.fr-mode-new .fr-repeat .fr-grid-body .fr-grid-td .xforms-control select, +#fr-view.fr-mode-edit .fr-repeat .fr-grid-body .fr-grid-td .xforms-control select, +#fr-view.fr-mode-new .fr-repeat .fr-grid-body .fr-grid-td .xforms-control textarea, +#fr-view.fr-mode-edit .fr-repeat .fr-grid-body .fr-grid-td .xforms-control textarea { + margin: 0 !important; + padding: 0 !important; +} + +#fr-view.fr-mode-new .fr-repeat.fr-repeat-single-row .xbl-fr-number-xforms-input, +#fr-view.fr-mode-edit .fr-repeat.fr-repeat-single-row .xbl-fr-number-xforms-input, +#fr-view.fr-mode-new .fr-repeat.fr-repeat-single-row .xbl-fr-number-xforms-output.xforms-hidden.xforms-control.xforms-output, +#fr-view.fr-mode-edit .fr-repeat.fr-repeat-single-row .xbl-fr-number-xforms-output.xforms-hidden.xforms-control.xforms-output, +#fr-view.fr-mode-new .fr-repeat.fr-repeat-single-row .xbl-fr-number-decimal-separator, +#fr-view.fr-mode-edit .fr-repeat.fr-repeat-single-row .xbl-fr-number-decimal-separator { + display: none !important; +} + +#fr-view.fr-mode-new input[type="file"]:focus, +#fr-view.fr-mode-edit input[type="file"]:focus { + border: none !important; + outline: none !important; +} + +#fr-view.fr-mode-new .xforms-alert.xforms-active, +#fr-view.fr-mode-edit .xforms-alert.xforms-active { + color: #b94a48; + padding-left: 5px !important; + margin-top: 5px !important; + line-height: 18px; + display: inline-block !important; + vertical-align: top !important; + background-image: none !important; +} + +#fr-view.fr-mode-new .fr-grid-master-row .fr-grid-th label, +#fr-view.fr-mode-edit .fr-grid-master-row .fr-grid-th label { + display: inline-block !important; + width: auto !important; + vertical-align: top !important; + font-size: 13px !important; + line-height: 18px !important; + color: #6E6E6E !important; +} + +#fr-view.fr-mode-new .fr-grid-master-row .fr-grid-th .xforms-hint, +#fr-view.fr-mode-edit .fr-grid-master-row .fr-grid-th .xforms-hint { + display: inline-block !important; + width: 80% !important; + vertical-align: top !important; + font-size: 13px !important; + line-height: 18px !important; + margin-left: 0 !important; +} + +#fr-view.fr-mode-new .xforms-required .xforms-label:before, +#fr-view.fr-mode-edit .xforms-required .xforms-label:before { + color: #b94a48 !important; +} + +#fr-view.fr-mode-new .hide-label-n-required .xforms-label, +#fr-view.fr-mode-edit .hide-label-n-required .xforms-label { + width: 10px !important; + height: 20px !important; + padding-top: 7px !important; + vertical-align: middle !important; +} + +#fr-view.fr-mode-new .table thead th, +#fr-view.fr-mode-edit .table thead th { + vertical-align: top !important; +} + +#fr-view .user-info { + color: #bbbbbb !important; +} + +#fr-view .user-info a { + color: #999 !important; + margin-left: 10px !important; + text-decoration: none !important; +} + +#fr-view .user-info a:hover { + color: #fff !important; +} + +@media print { + .fr-page-break-before.xforms-group > .xforms-switch { + /*padding-top: 300px;*/ + /*border: 1px solid red;*/ + /*padding-top: 300px;*/ + /*margin-top: 300px;*/ + /*text-align: center;*/ + } + + label { + /*border: 1px solid yellow;*/ + } + + input { + /*border: 1px solid red;*/ + } + + .big-logo .xforms-output-output { + content: " "; + background-image: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCYRXhpZgAATU0AKgAAAAgABQEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAExAAIAAAAMAAAAWodpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABR0lNUCAyLjguMTAAAAOQAAAHAAAABDAyMTCgAAAHAAAABDAxMDCgAQADAAAAAf//AAAAAAAA/+ECxGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpleGlmPSdodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyc+CiAgPGV4aWY6WFJlc29sdXRpb24+NzI8L2V4aWY6WFJlc29sdXRpb24+CiAgPGV4aWY6WVJlc29sdXRpb24+NzI8L2V4aWY6WVJlc29sdXRpb24+CiAgPGV4aWY6UmVzb2x1dGlvblVuaXQ+Q2FsPC9leGlmOlJlc29sdXRpb25Vbml0PgogIDxleGlmOlNvZnR3YXJlPkFkb2JlIEltYWdlUmVhZHk8L2V4aWY6U29mdHdhcmU+CiAgPGV4aWY6RXhpZlZlcnNpb24+RXhpZiB3IHdlcnNqaSAyLjE8L2V4aWY6RXhpZlZlcnNpb24+CiAgPGV4aWY6Rmxhc2hQaXhWZXJzaW9uPkZsYXNoUGl4IHcgd2Vyc2ppIDEuMDwvZXhpZjpGbGFzaFBpeFZlcnNpb24+CiAgPGV4aWY6Q29sb3JTcGFjZT5CxYLEhWQgd2V3bsSZdHJ6bnkgKG5pZXpuYW5hIHdhcnRvxZvEhyA2NTUzNSk8L2V4aWY6Q29sb3JTcGFjZT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0ncic/Pgr/2wBDAAMCAgMCAgMDAwME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) !important; + background-repeat: no-repeat !important; + background-position: 50% 0 !important; + height: 100px !important; + width: 100% !important; + display: block !important; + } + + .small-logo { + content: " "; + background-image: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QCYRXhpZgAATU0AKgAAAAgABQEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAExAAIAAAAMAAAAWodpAAQAAAABAAAAZgAAAAAAAABIAAAAAQAAAEgAAAABR0lNUCAyLjguMTAAAAOQAAAHAAAABDAyMTCgAAAHAAAABDAxMDCgAQADAAAAAf//AAAAAAAA/+EEt2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpleGlmPSdodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyc+CiAgPGV4aWY6WFJlc29sdXRpb24+NzI8L2V4aWY6WFJlc29sdXRpb24+CiAgPGV4aWY6WVJlc29sdXRpb24+NzI8L2V4aWY6WVJlc29sdXRpb24+CiAgPGV4aWY6UmVzb2x1dGlvblVuaXQ+Q2FsPC9leGlmOlJlc29sdXRpb25Vbml0PgogIDxleGlmOlNvZnR3YXJlPkFkb2JlIEltYWdlUmVhZHk8L2V4aWY6U29mdHdhcmU+CiAgPGV4aWY6Rmxhc2hQaXhWZXJzaW9uPkZsYXNoUGl4IHcgd2Vyc2ppIDEuMDwvZXhpZjpGbGFzaFBpeFZlcnNpb24+CiAgPGV4aWY6WFJlc29sdXRpb24+NzI8L2V4aWY6WFJlc29sdXRpb24+CiAgPGV4aWY6WVJlc29sdXRpb24+NzI8L2V4aWY6WVJlc29sdXRpb24+CiAgPGV4aWY6UmVzb2x1dGlvblVuaXQ+Q2FsPC9leGlmOlJlc29sdXRpb25Vbml0PgogIDxleGlmOlNvZnR3YXJlPkdJTVAgMi44LjEwPC9leGlmOlNvZnR3YXJlPgogIDxleGlmOkZsYXNoUGl4VmVyc2lvbj5GbGFzaFBpeCB3IHdlcnNqaSAxLjA8L2V4aWY6Rmxhc2hQaXhWZXJzaW9uPgogIDxleGlmOlhSZXNvbHV0aW9uPjcyPC9leGlmOlhSZXNvbHV0aW9uPgogIDxleGlmOllSZXNvbHV0aW9uPjcyPC9leGlmOllSZXNvbHV0aW9uPgogIDxleGlmOlJlc29sdXRpb25Vbml0PkNhbDwvZXhpZjpSZXNvbHV0aW9uVW5pdD4KICA8ZXhpZjpTb2Z0d2FyZT5BZG9iZSBJbWFnZVJlYWR5PC9leGlmOlNvZnR3YXJlPgogIDxleGlmOkV4aWZWZXJzaW9uPkV4aWYgdyB3ZXJzamkgMi4xPC9leGlmOkV4aWZWZXJzaW9uPgogIDxleGlmOkZsYXNoUGl4VmVyc2lvbj5GbGFzaFBpeCB3IHdlcnNqaSAxLjA8L2V4aWY6Rmxhc2hQaXhWZXJzaW9uPgogIDxleGlmOkNvbG9yU3BhY2U+QsWCxIVkIHdld27EmXRyem55IChuaWV6bmFuYSB3YXJ0b8WbxIcgNjU1MzUpPC9leGlmOkNvbG9yU3BhY2U+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCjwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9J3InPz4K/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8IAEQgAMgCWAwERAAIRAQMRAf/EAB0AAAEEAwEBAAAAAAAAAAAAAAADBAUGAQIIBwn/xAAbAQEBAAMBAQEAAAAAAAAAAAAABAEFBgIDB//aAAwDAQACEAMQAAAB8c6fjp3ZakYZz1VvVbrTGe4dftL9JfkyZEhQyJigABwN2XAOvvNp590nQdMl49h3DLbGyXtx2PiqFtGZqesgAHz+67hpKuBhLZUNL0AB3XLbYZL5oTFhsNzUkhUQFTQ+cu75uQqkla4YWHZR01SHz+vb8tsvJfVzBaimF9IkYmpHEoW04Y3PPSM9lb9fN6y6z53OwZq7PJe+MmwiIjoWFAADhDb6J9PWYxI49RXry5w6T8fROS9AVHJCj8clmLGAAcH9x+c4ZAADrXlOzvkWyAAAAAAAP//EACYQAAICAgEEAgEFAAAAAAAAAAMEAgUAAQYQERIUIDYTISQmMDT/2gAIAQEAAQUC7lK50ZZivGTppb9s2cEl/FIziSOpa31IWAo9+/SRIw38AR7Syc9DgUmyz6cN+kqmYHRKnKtIDrh1m2ypWRXykDJ4mhe6wnUBbmW4+ADfuMf/AMvXgf1MVumWUgjnr8gommKBMY2BYBWVggVeXclAI4Zv9NLng0GUtQiMsTDa32aDZ71mmQmiWulkgEj04gKR+Djf1NI0T+lYC7kp4m0GzW9iotl9hyya94kVvZthD8CLEYW49oEDh4/DQ6PVYR7SfGJsAlXsRaqqg9oezqi1obqlco84F9TVtQNu6aDse2RR1sw4kg2OUQWQWpxZFKEJxLH4IugWTN6F9FF5X0TXKD7yi1Mk3Z3qN5T8LnMfDN8faTFqvNiyJgYogZYZK13Sp6hiepVk3bWoUmoX4eEd54RzwjnhHPCOfjjnBvrH9n//xAAqEQABAwIEBQMFAAAAAAAAAAABAAIDBBESITAzEBNRgbExQWEFICI0Uv/aAAgBAwEBPwG0UcAcRmjwhgdMfhCniAtZciL+VQ7A7+dWZ1w0fHBjDI4NCY0Mbhbxotkd/OrNGeU2ThSbw+yi2R386sG0FLRA5sXImjN7JlW30kyKEjHeh4UWyO/nVpm3hCEV1Y+iazFknQtGdk6EM9lRbI7+dWkNoV+LrG6aRnYrECSEMItdFwc1UWyO/nVxOHusbuqxu6rG7qsbuqxu6r6f+u3V/8QAKREAAQMBCAEDBQAAAAAAAAAAAQACAwQQERIhMDNRsZETMYEgIzJBYf/aAAgBAgEBPwG+R8paDlbLMIwjPIT7r1pOVV5zH461Yhm4/wBsc4MGIpzi84jbVbvjrVif9xzLKnbP0VW7461ZtwqOqIyevWikF16fTEfhmjG8e4sqt3x1qzuulIRfcrx7ouwoSEpspd+1VbvjrVqBfKs23i5EHK9YSAES43oNLSqrdPx1q4RwsLeFhbwsLeFhbwsLeFWb51f/xAA8EAACAQMCAwUFBAcJAAAAAAABAgMEERIAIRMxQQUUIjJRECBhcYEzgpGyFSMkobHR8TBCQ1Jyc8HC4f/aAAgBAQAGPwJ0DkIPb6t0Gr52+WvtDqiYnoxJ+8dBlIZTuCOutjf2lnYIoFySentUMwBY2F+p92U9S3sLHkNFm5n20/8AtP8AxOnqFqZFNMkHDjHl+zjvf15nXAWV+G9XVl/12BuJPCL9NiTrtKY1j/s9PeLHlfxeLlv0+GpaTvMzRskLglgDkTLfxdB4Bqadqn9bBBXJH48gbWK/Pb+Gnm72wrFnEa0t9iLiwx+I3vqjrZKudmmVhJyP90kEDl01SwGXNUnRgDNxCLxzX3+g92WM873Hsb3KH5H8x0qKfDIcUfA4OfgeWiGRWvzuNCHbNlLY26D+uvEoa/qNSSy4JFGpZmI2AA/lrvco4a28zpZt+Q9fpp4kuJEFzFIhUgHrY/XQxRVt6D2JLGco3GSn4aLE2A3J0siNkjDIEdRp/nq0gy+I1bMb9Dq8RDrrdG/D2QRIcXeJ1B9NzqlpkpGNQMFMEkZAit1vy21D3EVI7S4b95Piv5DfntfK1v5ay7LSoCCG0jYv5eLHlz3ywy+Oq7hHw/4PhYKDj0v0/wDdSR0sdS0pope8q4bdsNr+rZf867OlSMyQ0s+bxqLnHBlv8bZX0DDTyGmjxE1QqEPiWF0XqRtc21AsSz/ozM+E5BScDf7vl+F9SJWrUGBVdacDI78R/TrbC2pKYpUCqZIeGgVr+RAf331w5I6pu0WMgl81uTc+mPK301QKFK4wqCGBBBtvz12jOjKFpVEjg9d7bap3mraWieq+winY5P8AHYbD56lpuC7TxkqyIL2tqREZYUhUvLNKcVjX46hqEq0q6Wa4SaBja45gg7g6p+8SBuMmQwa9vVT8dUPyP5jqqpUvxKe2V+Rv6fgR9NM/GTBebZbDSEyoA/l8XPQQuokPJb7nUWTCNpBcI5GWiIjmAWDMOQK6zEqFP82W2gyMGU8iD7vb8Ur4yTwqsY9TmDrs6ebtCOj4EKQzxOGysvVLDe412jS0lYezHkqFkjklJGUYv4Sw+h12zTNUcOGuiiUVZTYyJiciPRiDrs5ZqwVDJIZaiSO/DxHlQbbk6rFaI0lUtR3mPKQycQts45bdNUrRpxJBGxVPU3OqZ1kaskCPFKmyZB928X+q2l/ZZuEhTx4osqkBunJxv+/U5qOz+OJYsI1VV8PibYi+17g64FRR98qTJG3eCbDYLvlz2trh92firHCF4YXfGxNyeW9+Wp1ipsN5j0AcM6Nb6gEaScUnBpMorxOAMiufit9VH9NdogphG9TnEOlsF/7Ze7yGvKNeUa8o15Rryj8NUf3vzH+1/8QAJRABAQACAgEDBQADAAAAAAAAAREAITFBUWGBkRAgcaHxMLHR/9oACAEBAAE/Iax7udGdfSqdmKGldcPpMO9QwI+IlQPCZwJtNZfoquUkA5fwYACNHvLkICNTQsPYfj7R7N/TieLi9fYASnRShKATl2e0yJqsgmtZyg9zxlOgNFaDWnEfqKcmIvWdcTXMcHfHOLsZkdDGh5uNgd85rF/TQtKt/QtsMWJfIBtDAiN+Lcia/hgqATwbnv8AaVae6efoFj6X5+zevGYv/dpeJGuNb31goR0A19cUeDnZIf8AT5wBDtEtcArsDSF9mCyEARsSE2VDsrMDgVUMBAaYL6OCgThEmKi8GRPnDyuMNUOjowvRfDIUTGaKJqmEn7SxNqiOnA3wFd5w+wic6z18I2RHG70oFNSNJojuE5yG32IT2N3/ADcAJQsjUJ4Cp+2QItIebW27T0uGOXaPiq8GT9M3j+kagnNRHMGVDN72GbghqehQK2cs1Kee7y9gzvB1yUMODl5TrjvNS7IUoCaIL981pYsLyHbqn4d5AJsgBCbG7i3DBaE/uc2nQKDYbFnQxcGiGS0o8ZEVlttKuedQLiWu8KUg/IN557lNfgClPX6HEZL68GtrsFHhwMVSEKernNiAj4+cOLNU+wY+A4Y/CXNWftVAR+f1kegyA/LO+tzDkyZMmC1acdSD4HG0PpbDYHgajjH6XaIAqJfUy4rHjQi2UWu8vmhzJQoUG3jeS6s+MIZ4Cnpmzs0TiD5yixezNYLxV3C5crok4TiSE8HYs0JZ485LoN4mr4gZfiAzSL4G2pv3cMm5q+4LY0Edc3UYi6SaavrnjHK8JYrRZrc5fwMo60s21Q6oX5r9qhVnymfyM/kZ/Iz+b9Faf5Sf/9oADAMBAAIAAwAAABCzbRAQAASSHGpQCQSCSSZpKCASQQCcvfCQQSQAThVMASQQQQKP1wCSSCSRySAySSSSSf/EACMRAQABAgYCAwEAAAAAAAAAAAEAESEwMWGRobEQQSBR0YH/2gAIAQMBAT8QQPUbv2xVa+LQsM2GrurnNBAAH32YqenBzXxnBMHFY887sxVCyoDv4Zc1+HO7MUiaWpE1aaOUQy6nsvHFDq/Zl2/2F8pzuzFZg5EYFWi5RJsiJ9NYQUEdD8lDab6E53ZiiY+w7jdKKFGUQpX4jXayZwuFf3nSPjJrX9nO7MWkAW8127NduzVbs1W7Nduzt9uL/8QAJREAAQIEBgIDAAAAAAAAAAAAAQARITFhsRAwUXGRoUGBIMHR/9oACAECAQE/EAXEAeoQQDBhhG0SZBHhd6kq9ESDpYzQjySXTYGMgI5mnGftYzQu9YdYAS1T4T9rGaRBRr+JlA9UCDTGYMEWcmdqYvCMJqbtYzRagfoJ0WDgTUKKCAD2T8HI9oCWKFUbntYzSFI8E2QhDnME4IHh2gUNEeN0AIBgh0zEl0rGa65IKk4VJwqThUnCpOFa2Gb/AP/EACcQAQEAAgEEAQQBBQAAAAAAAAERACExQVFhcRAggZHxwTChsdHh/9oACAEBAAE/EN6KW9atHlwAAKzVeX38B+yR2+XsZN3WpA8GP/QwhoBhgbFXDMnaFVBpERHD1AEl0EYnsRHI75TAqz+K110BteDDqCEHCPGRk0OQrmBy0Q6J6fSOTRL4An+X43irQcvY++VUJfAdA8fDxgp/hwTB7CHdUGTTLybxzvcBElImESUWh49svPlgokBISJgVr4oSeHWslBOLbu6SUgmIC7QAULgT6vvWRO6gKYdAlH5ibKSGxpsoGjBsQVcNFGzT6R1AzfAj+fjoSFx2j5eMIICjR7YP6zj6IPKtkIiVrCNUJhcITaec750iV3EgnH0wbvAggaDTYKp7w9b0BJxuBL4JgbISGBXoxBAAqGbyuoyihkAIoXSZoNQftKGuXBRQKvjC6mwgJVHfDj0mowAqvgDGOWvSSHURH75Y8xER7430GtA/Zw/2x5JcFx9/xjvRQCE98OXdLy0n5y6BXnWXdEjNsHSKOPLhrR1+ioHWocXpOpEIZN2xQ5W2B6VkCJIbXoQEZITu0SpaWe2wBou4vUnCpLqo5qnU5kRbiEXtoqFogRYixu2QzRLwFAMCMkeAgAQ7IGKUuwwOUnNHXDPol5N9ighUotykRTZVlowrk8qqU9dSSyDH1KBCBoTBjfCHogRYu01groqdt4ENWCGY3XZjQWXQnJrH8ZIQkM0oDEsmlHtRjGEAoRAANFjCQAuhtCkK+wRnsYlNhAYBvPSUqHpfRC5GKQfDmuoh0vjn3HHjJLgMF3RqaenTGGMLV7CqeF8YufmUOvbtSIIibxUzeMUQqIYIXDcrQj2aRjntm5Fvw52zFaj1JkIIRm4a5xrIGyV6IpEpd0blWwT5JMTCAh6mO/Rdmgy9EJJU5yXNL1pUBUQALzNqzURaY+JnjsxzZFCN7qBYKvXKAO2XwRdOqRAvO1XvmZrOTDCklhoxwKKDTh57E4AgKUyG4FSYqR3YPDWbFjeYzabCk41ZeEKAeopjZGEcFPAtYVABAuHZSjln5KfTAgNVQ3X6HL1qFXP1vP1vP1/Lf6ufomAAEAgP6v8A/9k=) !important; + background-repeat: no-repeat !important ; + background-position: 0 0 !important; + height: 70px !important; + width: 100% !important; + display: block !important; + } + + .hide-in-pdf { + display: none !important; + } + + .hide-unselected-in-pdf .xforms-deselected { + display: none !important; + } + + .hide-label-n-required > .xforms-label { + border: 1px solid green !important; + display: none !important; + } +} + +@page { + @top-left { + content: element(logo); + border-bottom: 1px solid gray; + padding-top: 10px; + padding-bottom: 10px; + vertical-align: bottom; + } + @top-center { + content: " "; + color: white !important; + } +} \ No newline at end of file diff --git a/configuration/WEB-INF/resources/config/license.xml b/configuration/WEB-INF/resources/config/license.xml new file mode 100644 index 0000000..166a3d1 --- /dev/null +++ b/configuration/WEB-INF/resources/config/license.xml @@ -0,0 +1,18 @@ + + + + Orbeon, Inc. + Kamil Łukowski + Hycom + kamil.lukowski@it.hycom.pl + 2017-06-05 + + 2017-09-03 + + + + + + + MCwCFElcM8HWGXwfyB3JuOb24WybtQXLAhRwL7Kuuebb6HzAU7RLphXbNFR+gw== + \ No newline at end of file diff --git a/configuration/WEB-INF/resources/config/properties-local.xml b/configuration/WEB-INF/resources/config/properties-local.xml new file mode 100644 index 0000000..b57550d --- /dev/null +++ b/configuration/WEB-INF/resources/config/properties-local.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + /apps/fr/icons/icoca.png + + + + + refresh summary clear pdf save-draft submit review + + + + + require-uploads + then validate-all + then save + then send( + uri = "http://192.168.0.141:8090/integration/rest/form/submit/{xxf:instance('fr-parameters-instance')/document}", + method = "PUT", + content = "metadata" + ) + then email + then success-message("submit-dialog-message") + then send(uri="http://localhost:8080/rest/mapper/submit/{xxf:instance('fr-parameters-instance')/app}/{xxf:instance('fr-parameters-instance')/form}/{xxf:get-remote-user()}", method = "POST", content-type = "application/xml", content = "xml") + then navigate(uri = "javascript:hideSubmit()") + + + + + validate-all + then xf:show( + dialog = "fb-publish-dialog", + app = "{xxf:instance('fb-form-instance')/xh:head/xf:model[@id = 'fr-form-model']/xf:instance[@id = 'fr-form-metadata']/*/application-name}", + form = "{xxf:instance('fb-form-instance')/xh:head/xf:model[@id = 'fr-form-model']/xf:instance[@id = 'fr-form-metadata']/*/form-name}") + then send(uri="http://localhost:8080/rest/mapper/publish/{xxf:instance('fb-form-instance')/xh:head/xf:model[@id = 'fr-form-model']/xf:instance[@id = 'fr-form-metadata']/*/application-name}/{xxf:instance('fb-form-instance')/xh:head/xf:model[@id = 'fr-form-model']/xf:instance[@id = 'fr-form-metadata']/*/form-name}", method = "PUT", prune="false", content = "metadata") + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dear Sir/Madam + + There is a new form in Orbeon system. + This message contains an attachment with field form. + You can download and save it or find it in Orbeon system. + + Best regards + Orbeon + + \ No newline at end of file diff --git a/configuration/WEB-INF/web.xml b/configuration/WEB-INF/web.xml new file mode 100644 index 0000000..dc00686 --- /dev/null +++ b/configuration/WEB-INF/web.xml @@ -0,0 +1,376 @@ + + + + Orbeon Forms + + Orbeon Forms is an open source, standard-based web forms solution, which + includes Form Builder, a WYSIWYG browser-based authoring tool, and Form + Runner, a runtime environment which facilitates the deployment and + integration of a large number of complex forms. Orbeon Forms implements + different technologies, such as XForms and Ajax, with no need for + client-side software or plug-ins. + + + + oxf.resources.factory + org.orbeon.oxf.resources.PriorityResourceManagerFactory + + + + oxf.resources.priority.2 + org.orbeon.oxf.resources.WebAppResourceManagerFactory + + + oxf.resources.priority.2.oxf.resources.webapp.rootdir + /WEB-INF/resources + + + + oxf.resources.priority.6 + org.orbeon.oxf.resources.ClassLoaderResourceManagerFactory + + + + oxf.run-mode + prod + + + + oxf.properties + oxf:/config/properties-${oxf.run-mode}.xml + + + + oxf.initialize-logging + true + + + + + + + + + + + + orbeon-exist-filter + org.orbeon.oxf.servlet.TokenSecurityFilter + + + orbeon-exist-filter + /exist/* + REQUEST + FORWARD + + + + orbeon-limiter-filter + org.orbeon.oxf.servlet.LimiterFilter + + + include + (/fr/.*)|(/xforms-server) + + + + exclude + (?!/([^/]+)/service/).+\.(gif|css|pdf|json|js|coffee|map|png|jpg|xsd|htc|ico|swf|html|htm|txt) + + + + + min-threads + 1 + + + num-threads + x1 + + + max-threads + x1 + + + + orbeon-limiter-filter + /* + REQUEST + + + + orbeon-form-runner-auth-servlet-filter + org.orbeon.oxf.servlet.FormRunnerAuthFilter + + + orbeon-form-runner-auth-servlet-filter + /* + REQUEST + FORWARD + + + + orbeon-xforms-filter + org.orbeon.oxf.servlet.OrbeonXFormsFilter + + + + + + orbeon-xforms-filter + /xforms-jsp/* + + REQUEST + FORWARD + + + + org.orbeon.oxf.webapp.OrbeonServletContextListener + + + + org.orbeon.oxf.webapp.OrbeonSessionListener + + + + net.sf.ehcache.constructs.web.ShutdownListener + + + + orbeon-main-servlet + org.orbeon.oxf.servlet.OrbeonServlet + + + oxf.main-processor.name + {http://www.orbeon.com/oxf/processors}pipeline + + + oxf.main-processor.input.config + oxf:/config/prologue-servlet.xpl + + + + oxf.error-processor.name + {http://www.orbeon.com/oxf/processors}page-flow + + + oxf.error-processor.input.controller + oxf:/config/error-page-flow.xml + + + + oxf.http.accept-methods + get,post,head,put,delete + + + + + + + + + orbeon-renderer-servlet + org.orbeon.oxf.servlet.OrbeonServlet + + + oxf.main-processor.name + {http://www.orbeon.com/oxf/processors}page-flow + + + oxf.main-processor.input.controller + oxf:/ops/xforms/xforms-renderer-page-flow.xml + + + + oxf.error-processor.name + {http://www.orbeon.com/oxf/processors}pipeline + + + oxf.error-processor.input.config + oxf:/config/error.xpl + + + + + + + exist-rest-servlet + org.exist.http.servlets.EXistServlet + + basedir + WEB-INF/ + + + configuration + exist-conf.xml + + + start + true + + + + + + + orbeon-main-servlet + / + + + orbeon-renderer-servlet + /xforms-renderer + + + exist-rest-servlet + /exist/rest/* + + + + + + + + + + DataSource + jdbc/postgresql + javax.sql.DataSource + Container + + + + + + Form Builder + /fr/* + + + form-user + + + + + Form Builder + /fr/orbeon/builder/* + + + form-admin + + + + + Form Runner services and public pages and resources + /fr/service/* + /fr/style/* + /fr/not-found + /fr/unauthorized + /fr/error + /fr/login + /fr/login-error + + + + + + FORM + Secure content + + /fr/login + /fr/login-error + + + + form-admin + + + form-user + + + + 60 + + \ No newline at end of file diff --git a/configuration/info b/configuration/info new file mode 100644 index 0000000..4c46bd3 --- /dev/null +++ b/configuration/info @@ -0,0 +1,2 @@ +Installation and configuration: +http://confluence.moose.local/display/HYC/Configuration+of+testing+environment \ No newline at end of file diff --git a/configuration/sql/dropdownlist-create.sql b/configuration/sql/dropdownlist-create.sql new file mode 100644 index 0000000..aa5efcc --- /dev/null +++ b/configuration/sql/dropdownlist-create.sql @@ -0,0 +1,42 @@ +CREATE TABLE dropdown_currency +( + id bigint NOT NULL, + entity character varying(120) NOT NULL, + currency character varying(120) NOT NULL, + alphabetic_code character varying(3) NOT NULL, + numeric_code character varying(3) NOT NULL, + CONSTRAINT dropdown_currency_pkey PRIMARY KEY (id) +); + +CREATE TABLE dropdown_country +( + id bigint NOT NULL, + iso_alpha2 character varying(2) NOT NULL, + iso_alpha3 character varying(3) NOT NULL, + iso_numeric SMALLINT NOT NULL, + name character varying(120) NOT NULL, + CONSTRAINT dropdown_country_pkey PRIMARY KEY (id) +); + +CREATE TABLE dropdown_member_type +( + id bigint NOT NULL, + name character varying(120) NOT NULL, + CONSTRAINT dropdown_member_type_pkey PRIMARY KEY (id) +); + +CREATE TABLE dropdown_certificate_standard +( + id bigint NOT NULL, + name character varying(60) NOT NULL, + CONSTRAINT dropdown_certificate_standard_pkey PRIMARY KEY (id) +); + +CREATE TABLE dropdown_service_type +( + id bigint NOT NULL, + name character varying(120) NOT NULL, + description character varying(120) NOT NULL, + CONSTRAINT dropdown_service_type_pkey PRIMARY KEY (id) +); + diff --git a/configuration/sql/dropdownlist-values.sql b/configuration/sql/dropdownlist-values.sql new file mode 100644 index 0000000..c14edc8 --- /dev/null +++ b/configuration/sql/dropdownlist-values.sql @@ -0,0 +1,556 @@ + +--Currencies +INSERT INTO dropdown_currency VALUES(1,'AFGHANISTAN','Afghani','AFN','971'); +INSERT INTO dropdown_currency VALUES(2,'ÅLAND ISLANDS','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(3,'ALBANIA','Lek','ALL','008'); +INSERT INTO dropdown_currency VALUES(4,'ALGERIA','Algerian Dinar','DZD','012'); +INSERT INTO dropdown_currency VALUES(5,'AMERICAN SAMOA','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(6,'ANDORRA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(7,'ANGOLA','Kwanza','AOA','973'); +INSERT INTO dropdown_currency VALUES(8,'ANGUILLA','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(9,'ANTARCTICA','No universal currency','N/C',''); +INSERT INTO dropdown_currency VALUES(10,'ANTIGUA AND BARBUDA','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(11,'ARGENTINA','Argentine Peso','ARS','032'); +INSERT INTO dropdown_currency VALUES(12,'ARMENIA','Armenian Dram','AMD','051'); +INSERT INTO dropdown_currency VALUES(13,'ARUBA','Aruban Florin','AWG','533'); +INSERT INTO dropdown_currency VALUES(14,'AUSTRALIA','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(15,'AUSTRIA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(16,'AZERBAIJAN','Azerbaijan Manat','AZN','944'); +INSERT INTO dropdown_currency VALUES(17,'BAHAMAS (THE)','Bahamian Dollar','BSD','044'); +INSERT INTO dropdown_currency VALUES(18,'BAHRAIN','Bahraini Dinar','BHD','048'); +INSERT INTO dropdown_currency VALUES(19,'BANGLADESH','Taka','BDT','050'); +INSERT INTO dropdown_currency VALUES(20,'BARBADOS','Barbados Dollar','BBD','052'); +INSERT INTO dropdown_currency VALUES(21,'BELARUS','Belarusian Ruble','BYN','933'); +INSERT INTO dropdown_currency VALUES(22,'BELGIUM','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(23,'BELIZE','Belize Dollar','BZD','084'); +INSERT INTO dropdown_currency VALUES(24,'BENIN','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(25,'BERMUDA','Bermudian Dollar','BMD','060'); +INSERT INTO dropdown_currency VALUES(26,'BHUTAN','Indian Rupee','INR','356'); +INSERT INTO dropdown_currency VALUES(27,'BHUTAN','Ngultrum','BTN','064'); +INSERT INTO dropdown_currency VALUES(28,'BOLIVIA (PLURINATIONAL STATE OF)','Boliviano','BOB','068'); +INSERT INTO dropdown_currency VALUES(29,'BOLIVIA (PLURINATIONAL STATE OF)','Mvdol','BOV','984'); +INSERT INTO dropdown_currency VALUES(30,'BONAIRE, SINT EUSTATIUS AND SABA','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(31,'BOSNIA AND HERZEGOVINA','Convertible Mark','BAM','977'); +INSERT INTO dropdown_currency VALUES(32,'BOTSWANA','Pula','BWP','072'); +INSERT INTO dropdown_currency VALUES(33,'BOUVET ISLAND','Norwegian Krone','NOK','578'); +INSERT INTO dropdown_currency VALUES(34,'BRAZIL','Brazilian Real','BRL','986'); +INSERT INTO dropdown_currency VALUES(35,'BRITISH INDIAN OCEAN TERRITORY (THE)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(36,'BRUNEI DARUSSALAM','Brunei Dollar','BND','096'); +INSERT INTO dropdown_currency VALUES(37,'BULGARIA','Bulgarian Lev','BGN','975'); +INSERT INTO dropdown_currency VALUES(38,'BURKINA FASO','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(39,'BURUNDI','Burundi Franc','BIF','108'); +INSERT INTO dropdown_currency VALUES(40,'CABO VERDE','Cabo Verde Escudo','CVE','132'); +INSERT INTO dropdown_currency VALUES(41,'CAMBODIA','Riel','KHR','116'); +INSERT INTO dropdown_currency VALUES(42,'CAMEROON','CFA Franc BEAC','XAF','950'); +INSERT INTO dropdown_currency VALUES(43,'CANADA','Canadian Dollar','CAD','124'); +INSERT INTO dropdown_currency VALUES(44,'CAYMAN ISLANDS (THE)','Cayman Islands Dollar','KYD','136'); +INSERT INTO dropdown_currency VALUES(45,'CENTRAL AFRICAN REPUBLIC (THE)','CFA Franc BEAC','XAF','950'); +INSERT INTO dropdown_currency VALUES(46,'CHAD','CFA Franc BEAC','XAF','950'); +INSERT INTO dropdown_currency VALUES(47,'CHILE','Chilean Peso','CLP','152'); +INSERT INTO dropdown_currency VALUES(48,'CHILE','Unidad de Fomento','CLF','990'); +INSERT INTO dropdown_currency VALUES(49,'CHINA','Yuan Renminbi','CNY','156'); +INSERT INTO dropdown_currency VALUES(50,'CHRISTMAS ISLAND','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(51,'COCOS (KEELING) ISLANDS (THE)','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(52,'COLOMBIA','Colombian Peso','COP','170'); +INSERT INTO dropdown_currency VALUES(53,'COLOMBIA','Unidad de Valor Real','COU','970'); +INSERT INTO dropdown_currency VALUES(54,'COMOROS (THE)','Comorian Franc ','KMF','174'); +INSERT INTO dropdown_currency VALUES(55,'CONGO (THE DEMOCRATIC REPUBLIC OF THE)','Congolese Franc','CDF','976'); +INSERT INTO dropdown_currency VALUES(56,'CONGO (THE)','CFA Franc BEAC','XAF','950'); +INSERT INTO dropdown_currency VALUES(57,'COOK ISLANDS (THE)','New Zealand Dollar','NZD','554'); +INSERT INTO dropdown_currency VALUES(58,'COSTA RICA','Costa Rican Colon','CRC','188'); +INSERT INTO dropdown_currency VALUES(59,'CÔTE D''IVOIRE','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(60,'CROATIA','Kuna','HRK','191'); +INSERT INTO dropdown_currency VALUES(61,'CUBA','Cuban Peso','CUP','192'); +INSERT INTO dropdown_currency VALUES(62,'CUBA','Peso Convertible','CUC','931'); +INSERT INTO dropdown_currency VALUES(63,'CURAÇAO','Netherlands Antillean Guilder','ANG','532'); +INSERT INTO dropdown_currency VALUES(64,'CYPRUS','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(65,'CZECHIA','Czech Koruna','CZK','203'); +INSERT INTO dropdown_currency VALUES(66,'DENMARK','Danish Krone','DKK','208'); +INSERT INTO dropdown_currency VALUES(67,'DJIBOUTI','Djibouti Franc','DJF','262'); +INSERT INTO dropdown_currency VALUES(68,'DOMINICA','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(69,'DOMINICAN REPUBLIC (THE)','Dominican Peso','DOP','214'); +INSERT INTO dropdown_currency VALUES(70,'ECUADOR','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(71,'EGYPT','Egyptian Pound','EGP','818'); +INSERT INTO dropdown_currency VALUES(72,'EL SALVADOR','El Salvador Colon','SVC','222'); +INSERT INTO dropdown_currency VALUES(73,'EL SALVADOR','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(74,'EQUATORIAL GUINEA','CFA Franc BEAC','XAF','950'); +INSERT INTO dropdown_currency VALUES(75,'ERITREA','Nakfa','ERN','232'); +INSERT INTO dropdown_currency VALUES(76,'ESTONIA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(77,'ETHIOPIA','Ethiopian Birr','ETB','230'); +INSERT INTO dropdown_currency VALUES(78,'EUROPEAN UNION','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(79,'FALKLAND ISLANDS (THE) [MALVINAS]','Falkland Islands Pound','FKP','238'); +INSERT INTO dropdown_currency VALUES(80,'FAROE ISLANDS (THE)','Danish Krone','DKK','208'); +INSERT INTO dropdown_currency VALUES(81,'FIJI','Fiji Dollar','FJD','242'); +INSERT INTO dropdown_currency VALUES(82,'FINLAND','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(83,'FRANCE','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(84,'FRENCH GUIANA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(85,'FRENCH POLYNESIA','CFP Franc','XPF','953'); +INSERT INTO dropdown_currency VALUES(86,'FRENCH SOUTHERN TERRITORIES (THE)','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(87,'GABON','CFA Franc BEAC','XAF','950'); +INSERT INTO dropdown_currency VALUES(88,'GAMBIA (THE)','Dalasi','GMD','270'); +INSERT INTO dropdown_currency VALUES(89,'GEORGIA','Lari','GEL','981'); +INSERT INTO dropdown_currency VALUES(90,'GERMANY','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(91,'GHANA','Ghana Cedi','GHS','936'); +INSERT INTO dropdown_currency VALUES(92,'GIBRALTAR','Gibraltar Pound','GIP','292'); +INSERT INTO dropdown_currency VALUES(93,'GREECE','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(94,'GREENLAND','Danish Krone','DKK','208'); +INSERT INTO dropdown_currency VALUES(95,'GRENADA','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(96,'GUADELOUPE','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(97,'GUAM','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(98,'GUATEMALA','Quetzal','GTQ','320'); +INSERT INTO dropdown_currency VALUES(99,'GUERNSEY','Pound Sterling','GBP','826'); +INSERT INTO dropdown_currency VALUES(100,'GUINEA','Guinean Franc','GNF','324'); +INSERT INTO dropdown_currency VALUES(101,'GUINEA-BISSAU','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(102,'GUYANA','Guyana Dollar','GYD','328'); +INSERT INTO dropdown_currency VALUES(103,'HAITI','Gourde','HTG','332'); +INSERT INTO dropdown_currency VALUES(104,'HAITI','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(105,'HEARD ISLAND AND McDONALD ISLANDS','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(106,'HOLY SEE (THE)','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(107,'HONDURAS','Lempira','HNL','340'); +INSERT INTO dropdown_currency VALUES(108,'HONG KONG','Hong Kong Dollar','HKD','344'); +INSERT INTO dropdown_currency VALUES(109,'HUNGARY','Forint','HUF','348'); +INSERT INTO dropdown_currency VALUES(110,'ICELAND','Iceland Krona','ISK','352'); +INSERT INTO dropdown_currency VALUES(111,'INDIA','Indian Rupee','INR','356'); +INSERT INTO dropdown_currency VALUES(112,'INDONESIA','Rupiah','IDR','360'); +INSERT INTO dropdown_currency VALUES(113,'INTERNATIONAL MONETARY FUND (IMF) ','SDR (Special Drawing Right)','XDR','960'); +INSERT INTO dropdown_currency VALUES(114,'IRAN (ISLAMIC REPUBLIC OF)','Iranian Rial','IRR','364'); +INSERT INTO dropdown_currency VALUES(115,'IRAQ','Iraqi Dinar','IQD','368'); +INSERT INTO dropdown_currency VALUES(116,'IRELAND','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(117,'ISLE OF MAN','Pound Sterling','GBP','826'); +INSERT INTO dropdown_currency VALUES(118,'ISRAEL','New Israeli Sheqel','ILS','376'); +INSERT INTO dropdown_currency VALUES(119,'ITALY','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(120,'JAMAICA','Jamaican Dollar','JMD','388'); +INSERT INTO dropdown_currency VALUES(121,'JAPAN','Yen','JPY','392'); +INSERT INTO dropdown_currency VALUES(122,'JERSEY','Pound Sterling','GBP','826'); +INSERT INTO dropdown_currency VALUES(123,'JORDAN','Jordanian Dinar','JOD','400'); +INSERT INTO dropdown_currency VALUES(124,'KAZAKHSTAN','Tenge','KZT','398'); +INSERT INTO dropdown_currency VALUES(125,'KENYA','Kenyan Shilling','KES','404'); +INSERT INTO dropdown_currency VALUES(126,'KIRIBATI','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(127,'KOREA (THE DEMOCRATIC PEOPLE’S REPUBLIC OF)','North Korean Won','KPW','408'); +INSERT INTO dropdown_currency VALUES(128,'KOREA (THE REPUBLIC OF)','Won','KRW','410'); +INSERT INTO dropdown_currency VALUES(129,'KUWAIT','Kuwaiti Dinar','KWD','414'); +INSERT INTO dropdown_currency VALUES(130,'KYRGYZSTAN','Som','KGS','417'); +INSERT INTO dropdown_currency VALUES(131,'LAO PEOPLE’S DEMOCRATIC REPUBLIC (THE)','Lao Kip','LAK','418'); +INSERT INTO dropdown_currency VALUES(132,'LATVIA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(133,'LEBANON','Lebanese Pound','LBP','422'); +INSERT INTO dropdown_currency VALUES(134,'LESOTHO','Loti','LSL','426'); +INSERT INTO dropdown_currency VALUES(135,'LESOTHO','Rand','ZAR','710'); +INSERT INTO dropdown_currency VALUES(136,'LIBERIA','Liberian Dollar','LRD','430'); +INSERT INTO dropdown_currency VALUES(137,'LIBYA','Libyan Dinar','LYD','434'); +INSERT INTO dropdown_currency VALUES(138,'LIECHTENSTEIN','Swiss Franc','CHF','756'); +INSERT INTO dropdown_currency VALUES(139,'LITHUANIA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(140,'LUXEMBOURG','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(141,'MACAO','Pataca','MOP','446'); +INSERT INTO dropdown_currency VALUES(142,'MACEDONIA (THE FORMER YUGOSLAV REPUBLIC OF)','Denar','MKD','807'); +INSERT INTO dropdown_currency VALUES(143,'MADAGASCAR','Malagasy Ariary','MGA','969'); +INSERT INTO dropdown_currency VALUES(144,'MALAWI','Malawi Kwacha','MWK','454'); +INSERT INTO dropdown_currency VALUES(145,'MALAYSIA','Malaysian Ringgit','MYR','458'); +INSERT INTO dropdown_currency VALUES(146,'MALDIVES','Rufiyaa','MVR','462'); +INSERT INTO dropdown_currency VALUES(147,'MALI','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(148,'MALTA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(149,'MARSHALL ISLANDS (THE)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(150,'MARTINIQUE','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(151,'MAURITANIA','Ouguiya','MRO','478'); +INSERT INTO dropdown_currency VALUES(152,'MAURITIUS','Mauritius Rupee','MUR','480'); +INSERT INTO dropdown_currency VALUES(153,'MAYOTTE','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(154,'MEMBER COUNTRIES OF THE AFRICAN DEVELOPMENT BANK GROUP','ADB Unit of Account','XUA','965'); +INSERT INTO dropdown_currency VALUES(155,'MEXICO','Mexican Peso','MXN','484'); +INSERT INTO dropdown_currency VALUES(156,'MEXICO','Mexican Unidad de Inversion (UDI)','MXV','979'); +INSERT INTO dropdown_currency VALUES(157,'MICRONESIA (FEDERATED STATES OF)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(158,'MOLDOVA (THE REPUBLIC OF)','Moldovan Leu','MDL','498'); +INSERT INTO dropdown_currency VALUES(159,'MONACO','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(160,'MONGOLIA','Tugrik','MNT','496'); +INSERT INTO dropdown_currency VALUES(161,'MONTENEGRO','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(162,'MONTSERRAT','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(163,'MOROCCO','Moroccan Dirham','MAD','504'); +INSERT INTO dropdown_currency VALUES(164,'MOZAMBIQUE','Mozambique Metical','MZN','943'); +INSERT INTO dropdown_currency VALUES(165,'MYANMAR','Kyat','MMK','104'); +INSERT INTO dropdown_currency VALUES(166,'NAMIBIA','Namibia Dollar','NAD','516'); +INSERT INTO dropdown_currency VALUES(167,'NAMIBIA','Rand','ZAR','710'); +INSERT INTO dropdown_currency VALUES(168,'NAURU','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(169,'NEPAL','Nepalese Rupee','NPR','524'); +INSERT INTO dropdown_currency VALUES(170,'NETHERLANDS (THE)','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(171,'NEW CALEDONIA','CFP Franc','XPF','953'); +INSERT INTO dropdown_currency VALUES(172,'NEW ZEALAND','New Zealand Dollar','NZD','554'); +INSERT INTO dropdown_currency VALUES(173,'NICARAGUA','Cordoba Oro','NIO','558'); +INSERT INTO dropdown_currency VALUES(174,'NIGER (THE)','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(175,'NIGERIA','Naira','NGN','566'); +INSERT INTO dropdown_currency VALUES(176,'NIUE','New Zealand Dollar','NZD','554'); +INSERT INTO dropdown_currency VALUES(177,'NORFOLK ISLAND','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(178,'NORTHERN MARIANA ISLANDS (THE)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(179,'NORWAY','Norwegian Krone','NOK','578'); +INSERT INTO dropdown_currency VALUES(180,'OMAN','Rial Omani','OMR','512'); +INSERT INTO dropdown_currency VALUES(181,'PAKISTAN','Pakistan Rupee','PKR','586'); +INSERT INTO dropdown_currency VALUES(182,'PALAU','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(183,'PALESTINE, STATE OF','No universal currency','N/C','N/C'); +INSERT INTO dropdown_currency VALUES(184,'PANAMA','Balboa','PAB','590'); +INSERT INTO dropdown_currency VALUES(185,'PANAMA','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(186,'PAPUA NEW GUINEA','Kina','PGK','598'); +INSERT INTO dropdown_currency VALUES(187,'PARAGUAY','Guarani','PYG','600'); +INSERT INTO dropdown_currency VALUES(188,'PERU','Sol','PEN','604'); +INSERT INTO dropdown_currency VALUES(189,'PHILIPPINES (THE)','Philippine Peso','PHP','608'); +INSERT INTO dropdown_currency VALUES(190,'PITCAIRN','New Zealand Dollar','NZD','554'); +INSERT INTO dropdown_currency VALUES(191,'POLAND','Zloty','PLN','985'); +INSERT INTO dropdown_currency VALUES(192,'PORTUGAL','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(193,'PUERTO RICO','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(194,'QATAR','Qatari Rial','QAR','634'); +INSERT INTO dropdown_currency VALUES(195,'RÉUNION','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(196,'ROMANIA','Romanian Leu','RON','946'); +INSERT INTO dropdown_currency VALUES(197,'RUSSIAN FEDERATION (THE)','Russian Ruble','RUB','643'); +INSERT INTO dropdown_currency VALUES(198,'RWANDA','Rwanda Franc','RWF','646'); +INSERT INTO dropdown_currency VALUES(199,'SAINT BARTHÉLEMY','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(200,'SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA','Saint Helena Pound','SHP','654'); +INSERT INTO dropdown_currency VALUES(201,'SAINT KITTS AND NEVIS','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(202,'SAINT LUCIA','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(203,'SAINT MARTIN (FRENCH PART)','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(204,'SAINT PIERRE AND MIQUELON','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(205,'SAINT VINCENT AND THE GRENADINES','East Caribbean Dollar','XCD','951'); +INSERT INTO dropdown_currency VALUES(206,'SAMOA','Tala','WST','882'); +INSERT INTO dropdown_currency VALUES(207,'SAN MARINO','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(208,'SAO TOME AND PRINCIPE','Dobra','STD','678'); +INSERT INTO dropdown_currency VALUES(209,'SAUDI ARABIA','Saudi Riyal','SAR','682'); +INSERT INTO dropdown_currency VALUES(210,'SENEGAL','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(211,'SERBIA','Serbian Dinar','RSD','941'); +INSERT INTO dropdown_currency VALUES(212,'SEYCHELLES','Seychelles Rupee','SCR','690'); +INSERT INTO dropdown_currency VALUES(213,'SIERRA LEONE','Leone','SLL','694'); +INSERT INTO dropdown_currency VALUES(214,'SINGAPORE','Singapore Dollar','SGD','702'); +INSERT INTO dropdown_currency VALUES(215,'SINT MAARTEN (DUTCH PART)','Netherlands Antillean Guilder','ANG','532'); +INSERT INTO dropdown_currency VALUES(216,'SISTEMA UNITARIO DE COMPENSACION REGIONAL DE PAGOS "SUCRE"','Sucre','XSU','994'); +INSERT INTO dropdown_currency VALUES(217,'SLOVAKIA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(218,'SLOVENIA','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(219,'SOLOMON ISLANDS','Solomon Islands Dollar','SBD','090'); +INSERT INTO dropdown_currency VALUES(220,'SOMALIA','Somali Shilling','SOS','706'); +INSERT INTO dropdown_currency VALUES(221,'SOUTH AFRICA','Rand','ZAR','710'); +INSERT INTO dropdown_currency VALUES(222,'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS','No universal currency','N/C',''); +INSERT INTO dropdown_currency VALUES(223,'SOUTH SUDAN','South Sudanese Pound','SSP','728'); +INSERT INTO dropdown_currency VALUES(224,'SPAIN','Euro','EUR','978'); +INSERT INTO dropdown_currency VALUES(225,'SRI LANKA','Sri Lanka Rupee','LKR','144'); +INSERT INTO dropdown_currency VALUES(226,'SUDAN (THE)','Sudanese Pound','SDG','938'); +INSERT INTO dropdown_currency VALUES(227,'SURINAME','Surinam Dollar','SRD','968'); +INSERT INTO dropdown_currency VALUES(228,'SVALBARD AND JAN MAYEN','Norwegian Krone','NOK','578'); +INSERT INTO dropdown_currency VALUES(229,'SWAZILAND','Lilangeni','SZL','748'); +INSERT INTO dropdown_currency VALUES(230,'SWEDEN','Swedish Krona','SEK','752'); +INSERT INTO dropdown_currency VALUES(231,'SWITZERLAND','Swiss Franc','CHF','756'); +INSERT INTO dropdown_currency VALUES(232,'SWITZERLAND','WIR Euro','CHE','947'); +INSERT INTO dropdown_currency VALUES(233,'SWITZERLAND','WIR Franc','CHW','948'); +INSERT INTO dropdown_currency VALUES(234,'SYRIAN ARAB REPUBLIC','Syrian Pound','SYP','760'); +INSERT INTO dropdown_currency VALUES(235,'TAIWAN (PROVINCE OF CHINA)','New Taiwan Dollar','TWD','901'); +INSERT INTO dropdown_currency VALUES(236,'TAJIKISTAN','Somoni','TJS','972'); +INSERT INTO dropdown_currency VALUES(237,'TANZANIA, UNITED REPUBLIC OF','Tanzanian Shilling','TZS','834'); +INSERT INTO dropdown_currency VALUES(238,'THAILAND','Baht','THB','764'); +INSERT INTO dropdown_currency VALUES(239,'TIMOR-LESTE','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(240,'TOGO','CFA Franc BCEAO','XOF','952'); +INSERT INTO dropdown_currency VALUES(241,'TOKELAU','New Zealand Dollar','NZD','554'); +INSERT INTO dropdown_currency VALUES(242,'TONGA','Pa’anga','TOP','776'); +INSERT INTO dropdown_currency VALUES(243,'TRINIDAD AND TOBAGO','Trinidad and Tobago Dollar','TTD','780'); +INSERT INTO dropdown_currency VALUES(244,'TUNISIA','Tunisian Dinar','TND','788'); +INSERT INTO dropdown_currency VALUES(245,'TURKEY','Turkish Lira','TRY','949'); +INSERT INTO dropdown_currency VALUES(246,'TURKMENISTAN','Turkmenistan New Manat','TMT','934'); +INSERT INTO dropdown_currency VALUES(247,'TURKS AND CAICOS ISLANDS (THE)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(248,'TUVALU','Australian Dollar','AUD','036'); +INSERT INTO dropdown_currency VALUES(249,'UGANDA','Uganda Shilling','UGX','800'); +INSERT INTO dropdown_currency VALUES(250,'UKRAINE','Hryvnia','UAH','980'); +INSERT INTO dropdown_currency VALUES(251,'UNITED ARAB EMIRATES (THE)','UAE Dirham','AED','784'); +INSERT INTO dropdown_currency VALUES(252,'UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE)','Pound Sterling','GBP','826'); +INSERT INTO dropdown_currency VALUES(253,'UNITED STATES MINOR OUTLYING ISLANDS (THE)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(254,'UNITED STATES OF AMERICA (THE)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(255,'UNITED STATES OF AMERICA (THE)','US Dollar (Next day)','USN','997'); +INSERT INTO dropdown_currency VALUES(256,'URUGUAY','Peso Uruguayo','UYU','858'); +INSERT INTO dropdown_currency VALUES(257,'URUGUAY','Uruguay Peso en Unidades Indexadas (URUIURUI)','UYI','940'); +INSERT INTO dropdown_currency VALUES(258,'UZBEKISTAN','Uzbekistan Sum','UZS','860'); +INSERT INTO dropdown_currency VALUES(259,'VANUATU','Vatu','VUV','548'); +INSERT INTO dropdown_currency VALUES(260,'VENEZUELA (BOLIVARIAN REPUBLIC OF)','Bolívar','VEF','937'); +INSERT INTO dropdown_currency VALUES(261,'VIET NAM','Dong','VND','704'); +INSERT INTO dropdown_currency VALUES(262,'VIRGIN ISLANDS (BRITISH)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(263,'VIRGIN ISLANDS (U.S.)','US Dollar','USD','840'); +INSERT INTO dropdown_currency VALUES(264,'WALLIS AND FUTUNA','CFP Franc','XPF','953'); +INSERT INTO dropdown_currency VALUES(265,'WESTERN SAHARA','Moroccan Dirham','MAD','504'); +INSERT INTO dropdown_currency VALUES(266,'YEMEN','Yemeni Rial','YER','886'); +INSERT INTO dropdown_currency VALUES(267,'ZAMBIA','Zambian Kwacha','ZMW','967'); +INSERT INTO dropdown_currency VALUES(268,'ZIMBABWE','Zimbabwe Dollar','ZWL','932'); + + +--Countries +INSERT INTO dropdown_country VALUES(1,'AF','AFG',4,'Afghanistan'); +INSERT INTO dropdown_country VALUES(2,'AX','ALA',248,'Åland Islands'); +INSERT INTO dropdown_country VALUES(3,'AL','ALB',8,'Albania'); +INSERT INTO dropdown_country VALUES(4,'DZ','DZA',12,'Algeria'); +INSERT INTO dropdown_country VALUES(5,'AS','ASM',16,'American Samoa'); +INSERT INTO dropdown_country VALUES(6,'AD','AND',20,'Andorra'); +INSERT INTO dropdown_country VALUES(7,'AO','AGO',24,'Angola'); +INSERT INTO dropdown_country VALUES(8,'AI','AIA',660,'Anguilla'); +INSERT INTO dropdown_country VALUES(9,'AQ','ATA',10,'Antarctica'); +INSERT INTO dropdown_country VALUES(10,'AG','ATG',28,'Antigua and Barbuda'); +INSERT INTO dropdown_country VALUES(11,'AR','ARG',32,'Argentina'); +INSERT INTO dropdown_country VALUES(12,'AM','ARM',51,'Armenia'); +INSERT INTO dropdown_country VALUES(13,'AW','ABW',533,'Aruba'); +INSERT INTO dropdown_country VALUES(14,'AU','AUS',36,'Australia'); +INSERT INTO dropdown_country VALUES(15,'AT','AUT',40,'Austria'); +INSERT INTO dropdown_country VALUES(16,'AZ','AZE',31,'Azerbaijan'); +INSERT INTO dropdown_country VALUES(17,'BS','BHS',44,'Bahamas'); +INSERT INTO dropdown_country VALUES(18,'BH','BHR',48,'Bahrain'); +INSERT INTO dropdown_country VALUES(19,'BD','BGD',50,'Bangladesh'); +INSERT INTO dropdown_country VALUES(20,'BB','BRB',52,'Barbados'); +INSERT INTO dropdown_country VALUES(21,'BY','BLR',112,'Belarus'); +INSERT INTO dropdown_country VALUES(22,'BE','BEL',56,'Belgium'); +INSERT INTO dropdown_country VALUES(23,'BZ','BLZ',84,'Belize'); +INSERT INTO dropdown_country VALUES(24,'BJ','BEN',204,'Benin'); +INSERT INTO dropdown_country VALUES(25,'BM','BMU',60,'Bermuda'); +INSERT INTO dropdown_country VALUES(26,'BT','BTN',64,'Bhutan'); +INSERT INTO dropdown_country VALUES(27,'BO','BOL',68,'Bolivia (Plurinational State of)'); +INSERT INTO dropdown_country VALUES(28,'BQ','BES',535,'Bonaire, Sint Eustatius and Saba'); +INSERT INTO dropdown_country VALUES(29,'BA','BIH',70,'Bosnia and Herzegovina'); +INSERT INTO dropdown_country VALUES(30,'BW','BWA',72,'Botswana'); +INSERT INTO dropdown_country VALUES(31,'BV','BVT',74,'Bouvet Island'); +INSERT INTO dropdown_country VALUES(32,'BR','BRA',76,'Brazil'); +INSERT INTO dropdown_country VALUES(33,'IO','IOT',86,'British Indian Ocean Territory'); +INSERT INTO dropdown_country VALUES(34,'BN','BRN',96,'Brunei Darussalam'); +INSERT INTO dropdown_country VALUES(35,'BG','BGR',100,'Bulgaria'); +INSERT INTO dropdown_country VALUES(36,'BF','BFA',854,'Burkina Faso'); +INSERT INTO dropdown_country VALUES(37,'BI','BDI',108,'Burundi'); +INSERT INTO dropdown_country VALUES(38,'KH','KHM',116,'Cambodia'); +INSERT INTO dropdown_country VALUES(39,'CM','CMR',120,'Cameroon'); +INSERT INTO dropdown_country VALUES(40,'CA','CAN',124,'Canada'); +INSERT INTO dropdown_country VALUES(41,'CV','CPV',132,'Cabo Verde'); +INSERT INTO dropdown_country VALUES(42,'KY','CYM',136,'Cayman Islands'); +INSERT INTO dropdown_country VALUES(43,'CF','CAF',140,'Central African Republic'); +INSERT INTO dropdown_country VALUES(44,'TD','TCD',148,'Chad'); +INSERT INTO dropdown_country VALUES(45,'CL','CHL',152,'Chile'); +INSERT INTO dropdown_country VALUES(46,'CN','CHN',156,'China'); +INSERT INTO dropdown_country VALUES(47,'CX','CXR',162,'Christmas Island'); +INSERT INTO dropdown_country VALUES(48,'CC','CCK',166,'Cocos (Keeling) Islands'); +INSERT INTO dropdown_country VALUES(49,'CO','COL',170,'Colombia'); +INSERT INTO dropdown_country VALUES(50,'KM','COM',174,'Comoros'); +INSERT INTO dropdown_country VALUES(51,'CG','COG',178,'Congo'); +INSERT INTO dropdown_country VALUES(52,'CD','COD',180,'Congo (Democratic Republic of the)'); +INSERT INTO dropdown_country VALUES(53,'CK','COK',184,'Cook Islands'); +INSERT INTO dropdown_country VALUES(54,'CR','CRI',188,'Costa Rica'); +INSERT INTO dropdown_country VALUES(55,'CI','CIV',384,'Côte d''Ivoire'); +INSERT INTO dropdown_country VALUES(56,'HR','HRV',191,'Croatia'); +INSERT INTO dropdown_country VALUES(57,'CU','CUB',192,'Cuba'); +INSERT INTO dropdown_country VALUES(58,'CW','CUW',531,'Curaçao'); +INSERT INTO dropdown_country VALUES(59,'CY','CYP',196,'Cyprus'); +INSERT INTO dropdown_country VALUES(60,'CZ','CZE',203,'Czech Republic'); +INSERT INTO dropdown_country VALUES(61,'DK','DNK',208,'Denmark'); +INSERT INTO dropdown_country VALUES(62,'DJ','DJI',262,'Djibouti'); +INSERT INTO dropdown_country VALUES(63,'DM','DMA',212,'Dominica'); +INSERT INTO dropdown_country VALUES(64,'DO','DOM',214,'Dominican Republic'); +INSERT INTO dropdown_country VALUES(65,'EC','ECU',218,'Ecuador'); +INSERT INTO dropdown_country VALUES(66,'EG','EGY',818,'Egypt'); +INSERT INTO dropdown_country VALUES(67,'SV','SLV',222,'El Salvador'); +INSERT INTO dropdown_country VALUES(68,'GQ','GNQ',226,'Equatorial Guinea'); +INSERT INTO dropdown_country VALUES(69,'ER','ERI',232,'Eritrea'); +INSERT INTO dropdown_country VALUES(70,'EE','EST',233,'Estonia'); +INSERT INTO dropdown_country VALUES(71,'ET','ETH',231,'Ethiopia'); +INSERT INTO dropdown_country VALUES(72,'FK','FLK',238,'Falkland Islands (Malvinas)'); +INSERT INTO dropdown_country VALUES(73,'FO','FRO',234,'Faroe Islands'); +INSERT INTO dropdown_country VALUES(74,'FJ','FJI',242,'Fiji'); +INSERT INTO dropdown_country VALUES(75,'FI','FIN',246,'Finland'); +INSERT INTO dropdown_country VALUES(76,'FR','FRA',250,'France'); +INSERT INTO dropdown_country VALUES(77,'GF','GUF',254,'French Guiana'); +INSERT INTO dropdown_country VALUES(78,'PF','PYF',258,'French Polynesia'); +INSERT INTO dropdown_country VALUES(79,'TF','ATF',260,'French Southern Territories'); +INSERT INTO dropdown_country VALUES(80,'GA','GAB',266,'Gabon'); +INSERT INTO dropdown_country VALUES(81,'GM','GMB',270,'Gambia'); +INSERT INTO dropdown_country VALUES(82,'GE','GEO',268,'Georgia'); +INSERT INTO dropdown_country VALUES(83,'DE','DEU',276,'Germany'); +INSERT INTO dropdown_country VALUES(84,'GH','GHA',288,'Ghana'); +INSERT INTO dropdown_country VALUES(85,'GI','GIB',292,'Gibraltar'); +INSERT INTO dropdown_country VALUES(86,'GR','GRC',300,'Greece'); +INSERT INTO dropdown_country VALUES(87,'GL','GRL',304,'Greenland'); +INSERT INTO dropdown_country VALUES(88,'GD','GRD',308,'Grenada'); +INSERT INTO dropdown_country VALUES(89,'GP','GLP',312,'Guadeloupe'); +INSERT INTO dropdown_country VALUES(90,'GU','GUM',316,'Guam'); +INSERT INTO dropdown_country VALUES(91,'GT','GTM',320,'Guatemala'); +INSERT INTO dropdown_country VALUES(92,'GG','GGY',831,'Guernsey'); +INSERT INTO dropdown_country VALUES(93,'GN','GIN',324,'Guinea'); +INSERT INTO dropdown_country VALUES(94,'GW','GNB',624,'Guinea-Bissau'); +INSERT INTO dropdown_country VALUES(95,'GY','GUY',328,'Guyana'); +INSERT INTO dropdown_country VALUES(96,'HT','HTI',332,'Haiti'); +INSERT INTO dropdown_country VALUES(97,'HM','HMD',334,'Heard Island and McDonald Islands'); +INSERT INTO dropdown_country VALUES(98,'VA','VAT',336,'Holy See'); +INSERT INTO dropdown_country VALUES(99,'HN','HND',340,'Honduras'); +INSERT INTO dropdown_country VALUES(100,'HK','HKG',344,'Hong Kong'); +INSERT INTO dropdown_country VALUES(101,'HU','HUN',348,'Hungary'); +INSERT INTO dropdown_country VALUES(102,'IS','ISL',352,'Iceland'); +INSERT INTO dropdown_country VALUES(103,'IN','IND',356,'India'); +INSERT INTO dropdown_country VALUES(104,'ID','IDN',360,'Indonesia'); +INSERT INTO dropdown_country VALUES(105,'IR','IRN',364,'Iran (Islamic Republic of)'); +INSERT INTO dropdown_country VALUES(106,'IQ','IRQ',368,'Iraq'); +INSERT INTO dropdown_country VALUES(107,'IE','IRL',372,'Ireland'); +INSERT INTO dropdown_country VALUES(108,'IM','IMN',833,'Isle of Man'); +INSERT INTO dropdown_country VALUES(109,'IL','ISR',376,'Israel'); +INSERT INTO dropdown_country VALUES(110,'IT','ITA',380,'Italy'); +INSERT INTO dropdown_country VALUES(111,'JM','JAM',388,'Jamaica'); +INSERT INTO dropdown_country VALUES(112,'JP','JPN',392,'Japan'); +INSERT INTO dropdown_country VALUES(113,'JE','JEY',832,'Jersey'); +INSERT INTO dropdown_country VALUES(114,'JO','JOR',400,'Jordan'); +INSERT INTO dropdown_country VALUES(115,'KZ','KAZ',398,'Kazakhstan'); +INSERT INTO dropdown_country VALUES(116,'KE','KEN',404,'Kenya'); +INSERT INTO dropdown_country VALUES(117,'KI','KIR',296,'Kiribati'); +INSERT INTO dropdown_country VALUES(118,'KP','PRK',408,'Korea (Democratic People''s Republic of)'); +INSERT INTO dropdown_country VALUES(119,'KR','KOR',410,'Korea (Republic of)'); +INSERT INTO dropdown_country VALUES(120,'KO','KOS',780,'Kosovo'); +INSERT INTO dropdown_country VALUES(121,'KW','KWT',414,'Kuwait'); +INSERT INTO dropdown_country VALUES(122,'KG','KGZ',417,'Kyrgyzstan'); +INSERT INTO dropdown_country VALUES(123,'LA','LAO',418,'Lao People''s Democratic Republic'); +INSERT INTO dropdown_country VALUES(124,'LV','LVA',428,'Latvia'); +INSERT INTO dropdown_country VALUES(125,'LB','LBN',422,'Lebanon'); +INSERT INTO dropdown_country VALUES(126,'LS','LSO',426,'Lesotho'); +INSERT INTO dropdown_country VALUES(127,'LR','LBR',430,'Liberia'); +INSERT INTO dropdown_country VALUES(128,'LY','LBY',434,'Libya'); +INSERT INTO dropdown_country VALUES(129,'LI','LIE',438,'Liechtenstein'); +INSERT INTO dropdown_country VALUES(130,'LT','LTU',440,'Lithuania'); +INSERT INTO dropdown_country VALUES(131,'LU','LUX',442,'Luxembourg'); +INSERT INTO dropdown_country VALUES(132,'MO','MAC',446,'Macao'); +INSERT INTO dropdown_country VALUES(133,'MK','MKD',807,'Macedonia (the former Yugoslav Republic of)'); +INSERT INTO dropdown_country VALUES(134,'MG','MDG',450,'Madagascar'); +INSERT INTO dropdown_country VALUES(135,'MW','MWI',454,'Malawi'); +INSERT INTO dropdown_country VALUES(136,'MY','MYS',458,'Malaysia'); +INSERT INTO dropdown_country VALUES(137,'MV','MDV',462,'Maldives'); +INSERT INTO dropdown_country VALUES(138,'ML','MLI',466,'Mali'); +INSERT INTO dropdown_country VALUES(139,'MT','MLT',470,'Malta'); +INSERT INTO dropdown_country VALUES(140,'MH','MHL',584,'Marshall Islands'); +INSERT INTO dropdown_country VALUES(141,'MQ','MTQ',474,'Martinique'); +INSERT INTO dropdown_country VALUES(142,'MR','MRT',478,'Mauritania'); +INSERT INTO dropdown_country VALUES(143,'MU','MUS',480,'Mauritius'); +INSERT INTO dropdown_country VALUES(144,'YT','MYT',175,'Mayotte'); +INSERT INTO dropdown_country VALUES(145,'MX','MEX',484,'Mexico'); +INSERT INTO dropdown_country VALUES(146,'FM','FSM',583,'Micronesia (Federated States of)'); +INSERT INTO dropdown_country VALUES(147,'MD','MDA',498,'Moldova (Republic of)'); +INSERT INTO dropdown_country VALUES(148,'MC','MCO',492,'Monaco'); +INSERT INTO dropdown_country VALUES(149,'MN','MNG',496,'Mongolia'); +INSERT INTO dropdown_country VALUES(150,'ME','MNE',499,'Montenegro'); +INSERT INTO dropdown_country VALUES(151,'MS','MSR',500,'Montserrat'); +INSERT INTO dropdown_country VALUES(152,'MA','MAR',504,'Morocco'); +INSERT INTO dropdown_country VALUES(153,'MZ','MOZ',508,'Mozambique'); +INSERT INTO dropdown_country VALUES(154,'MM','MMR',104,'Myanmar'); +INSERT INTO dropdown_country VALUES(155,'NA','NAM',516,'Namibia'); +INSERT INTO dropdown_country VALUES(156,'NR','NRU',520,'Nauru'); +INSERT INTO dropdown_country VALUES(157,'NP','NPL',524,'Nepal'); +INSERT INTO dropdown_country VALUES(158,'NL','NLD',528,'Netherlands'); +INSERT INTO dropdown_country VALUES(159,'NC','NCL',540,'New Caledonia'); +INSERT INTO dropdown_country VALUES(160,'NZ','NZL',554,'New Zealand'); +INSERT INTO dropdown_country VALUES(161,'NI','NIC',558,'Nicaragua'); +INSERT INTO dropdown_country VALUES(162,'NE','NER',562,'Niger'); +INSERT INTO dropdown_country VALUES(163,'NG','NGA',566,'Nigeria'); +INSERT INTO dropdown_country VALUES(164,'NU','NIU',570,'Niue'); +INSERT INTO dropdown_country VALUES(165,'NF','NFK',574,'Norfolk Island'); +INSERT INTO dropdown_country VALUES(166,'MP','MNP',580,'Northern Mariana Islands'); +INSERT INTO dropdown_country VALUES(167,'NO','NOR',578,'Norway'); +INSERT INTO dropdown_country VALUES(168,'OM','OMN',512,'Oman'); +INSERT INTO dropdown_country VALUES(169,'PK','PAK',586,'Pakistan'); +INSERT INTO dropdown_country VALUES(170,'PW','PLW',585,'Palau'); +INSERT INTO dropdown_country VALUES(171,'PS','PSE',275,'Palestine, State of'); +INSERT INTO dropdown_country VALUES(172,'PA','PAN',591,'Panama'); +INSERT INTO dropdown_country VALUES(173,'PG','PNG',598,'Papua New Guinea'); +INSERT INTO dropdown_country VALUES(174,'PY','PRY',600,'Paraguay'); +INSERT INTO dropdown_country VALUES(175,'PE','PER',604,'Peru'); +INSERT INTO dropdown_country VALUES(176,'PH','PHL',608,'Philippines'); +INSERT INTO dropdown_country VALUES(177,'PN','PCN',612,'Pitcairn'); +INSERT INTO dropdown_country VALUES(178,'PL','POL',616,'Poland'); +INSERT INTO dropdown_country VALUES(179,'PT','PRT',620,'Portugal'); +INSERT INTO dropdown_country VALUES(180,'PR','PRI',630,'Puerto Rico'); +INSERT INTO dropdown_country VALUES(181,'QA','QAT',634,'Qatar'); +INSERT INTO dropdown_country VALUES(182,'RE','REU',638,'Réunion'); +INSERT INTO dropdown_country VALUES(183,'RO','ROU',642,'Romania'); +INSERT INTO dropdown_country VALUES(184,'RU','RUS',643,'Russian Federation'); +INSERT INTO dropdown_country VALUES(185,'RW','RWA',646,'Rwanda'); +INSERT INTO dropdown_country VALUES(186,'BL','BLM',652,'Saint Barthélemy'); +INSERT INTO dropdown_country VALUES(187,'SH','SHN',654,'Saint Helena, Ascension and Tristan da Cunha'); +INSERT INTO dropdown_country VALUES(188,'KN','KNA',659,'Saint Kitts and Nevis'); +INSERT INTO dropdown_country VALUES(189,'LC','LCA',662,'Saint Lucia'); +INSERT INTO dropdown_country VALUES(190,'MF','MAF',663,'Saint Martin (French part)'); +INSERT INTO dropdown_country VALUES(191,'PM','SPM',666,'Saint Pierre and Miquelon'); +INSERT INTO dropdown_country VALUES(192,'VC','VCT',670,'Saint Vincent and the Grenadines'); +INSERT INTO dropdown_country VALUES(193,'WS','WSM',882,'Samoa'); +INSERT INTO dropdown_country VALUES(194,'SM','SMR',674,'San Marino'); +INSERT INTO dropdown_country VALUES(195,'ST','STP',678,'Sao Tome and Principe'); +INSERT INTO dropdown_country VALUES(196,'SA','SAU',682,'Saudi Arabia'); +INSERT INTO dropdown_country VALUES(197,'SN','SEN',686,'Senegal'); +INSERT INTO dropdown_country VALUES(198,'RS','SRB',688,'Serbia'); +INSERT INTO dropdown_country VALUES(199,'SC','SYC',690,'Seychelles'); +INSERT INTO dropdown_country VALUES(200,'SL','SLE',694,'Sierra Leone'); +INSERT INTO dropdown_country VALUES(201,'SG','SGP',702,'Singapore'); +INSERT INTO dropdown_country VALUES(202,'SX','SXM',534,'Sint Maarten (Dutch part)'); +INSERT INTO dropdown_country VALUES(203,'SK','SVK',703,'Slovakia'); +INSERT INTO dropdown_country VALUES(204,'SI','SVN',705,'Slovenia'); +INSERT INTO dropdown_country VALUES(205,'SB','SLB',90,'Solomon Islands'); +INSERT INTO dropdown_country VALUES(206,'SO','SOM',706,'Somalia'); +INSERT INTO dropdown_country VALUES(207,'ZA','ZAF',710,'South Africa'); +INSERT INTO dropdown_country VALUES(208,'GS','SGS',239,'South Georgia and the South Sandwich Islands'); +INSERT INTO dropdown_country VALUES(209,'SS','SSD',728,'South Sudan'); +INSERT INTO dropdown_country VALUES(210,'ES','ESP',724,'Spain'); +INSERT INTO dropdown_country VALUES(211,'LK','LKA',144,'Sri Lanka'); +INSERT INTO dropdown_country VALUES(212,'SD','SDN',729,'Sudan'); +INSERT INTO dropdown_country VALUES(213,'SR','SUR',740,'Suriname'); +INSERT INTO dropdown_country VALUES(214,'SJ','SJM',744,'Svalbard and Jan Mayen'); +INSERT INTO dropdown_country VALUES(215,'SZ','SWZ',748,'Swaziland'); +INSERT INTO dropdown_country VALUES(216,'SE','SWE',752,'Sweden'); +INSERT INTO dropdown_country VALUES(217,'CH','CHE',756,'Switzerland'); +INSERT INTO dropdown_country VALUES(218,'SY','SYR',760,'Syrian Arab Republic'); +INSERT INTO dropdown_country VALUES(219,'TW','TWN',158,'Taiwan, Province of China'); +INSERT INTO dropdown_country VALUES(220,'TJ','TJK',762,'Tajikistan'); +INSERT INTO dropdown_country VALUES(221,'TZ','TZA',834,'Tanzania, United Republic of'); +INSERT INTO dropdown_country VALUES(222,'TH','THA',764,'Thailand'); +INSERT INTO dropdown_country VALUES(223,'TL','TLS',626,'Timor-Leste'); +INSERT INTO dropdown_country VALUES(224,'TG','TGO',768,'Togo'); +INSERT INTO dropdown_country VALUES(225,'TK','TKL',772,'Tokelau'); +INSERT INTO dropdown_country VALUES(226,'TO','TON',776,'Tonga'); +INSERT INTO dropdown_country VALUES(227,'TT','TTO',780,'Trinidad and Tobago'); +INSERT INTO dropdown_country VALUES(228,'TN','TUN',788,'Tunisia'); +INSERT INTO dropdown_country VALUES(229,'TR','TUR',792,'Turkey'); +INSERT INTO dropdown_country VALUES(230,'TM','TKM',795,'Turkmenistan'); +INSERT INTO dropdown_country VALUES(231,'TC','TCA',796,'Turks and Caicos Islands'); +INSERT INTO dropdown_country VALUES(232,'TV','TUV',798,'Tuvalu'); +INSERT INTO dropdown_country VALUES(233,'UG','UGA',800,'Uganda'); +INSERT INTO dropdown_country VALUES(234,'UA','UKR',804,'Ukraine'); +INSERT INTO dropdown_country VALUES(235,'AE','ARE',784,'United Arab Emirates'); +INSERT INTO dropdown_country VALUES(236,'GB','GBR',826,'United Kingdom of Great Britain and Northern Ireland'); +INSERT INTO dropdown_country VALUES(237,'US','USA',840,'United States of America'); +INSERT INTO dropdown_country VALUES(238,'UM','UMI',581,'United States Minor Outlying Islands'); +INSERT INTO dropdown_country VALUES(239,'UY','URY',858,'Uruguay'); +INSERT INTO dropdown_country VALUES(240,'UZ','UZB',860,'Uzbekistan'); +INSERT INTO dropdown_country VALUES(241,'VU','VUT',548,'Vanuatu'); +INSERT INTO dropdown_country VALUES(242,'VE','VEN',862,'Venezuela (Bolivarian Republic of)'); +INSERT INTO dropdown_country VALUES(243,'VN','VNM',704,'Viet Nam'); +INSERT INTO dropdown_country VALUES(244,'VG','VGB',92,'Virgin Islands (British)'); +INSERT INTO dropdown_country VALUES(245,'VI','VIR',850,'Virgin Islands (U.S.)'); +INSERT INTO dropdown_country VALUES(246,'WF','WLF',876,'Wallis and Futuna'); +INSERT INTO dropdown_country VALUES(247,'EH','ESH',732,'Western Sahara'); +INSERT INTO dropdown_country VALUES(248,'YE','YEM',887,'Yemen'); +INSERT INTO dropdown_country VALUES(249,'ZM','ZMB',894,'Zambia'); +INSERT INTO dropdown_country VALUES(250,'ZW','ZWE',716,'Zimbabwe'); +INSERT INTO dropdown_country VALUES(251,'AN','ANT',530,'Netherlands Antilles'); + + +--Member type +INSERT INTO dropdown_member_type VALUES(1,'Corporation'); +INSERT INTO dropdown_member_type VALUES(2,'Limited Liability Company'); +INSERT INTO dropdown_member_type VALUES(3,'Sole proprietorship'); +INSERT INTO dropdown_member_type VALUES(4,'General partnership'); +INSERT INTO dropdown_member_type VALUES(5,'Limited partnership'); +INSERT INTO dropdown_member_type VALUES(6,'Other'); + + +--Certificate standard +INSERT INTO dropdown_certificate_standard VALUES(3,'ISO 18788'); +INSERT INTO dropdown_certificate_standard VALUES(2,'ISO 28007'); +INSERT INTO dropdown_certificate_standard VALUES(1,'PSC.1'); +INSERT INTO dropdown_certificate_standard VALUES(0,'Other'); + + +--Service type +INSERT INTO dropdown_service_type VALUES(1,'Close Protection','Land'); +INSERT INTO dropdown_service_type VALUES(2,'Static Security','Land'); +INSERT INTO dropdown_service_type VALUES(3,'Mobile Escorts','Land'); +INSERT INTO dropdown_service_type VALUES(4,'Security Management Consultancy','Land/Remote'); +INSERT INTO dropdown_service_type VALUES(5,'Training Services','Land'); +INSERT INTO dropdown_service_type VALUES(6,'Intelligence','Land/Remote'); +INSERT INTO dropdown_service_type VALUES(7,'Drone Operators','Land'); +INSERT INTO dropdown_service_type VALUES(8,'Vessel Protection','Maritime'); +INSERT INTO dropdown_service_type VALUES(9,'Stationary Offshore Protection','Maritime'); +INSERT INTO dropdown_service_type VALUES(10,'Floating armories','Maritime'); + + + diff --git a/configuration/sql/mapperdatabase-create.sql b/configuration/sql/mapperdatabase-create.sql new file mode 100644 index 0000000..36e3f03 --- /dev/null +++ b/configuration/sql/mapperdatabase-create.sql @@ -0,0 +1,7 @@ +CREATE DATABASE orbeon_mapper +WITH OWNER = postgres +ENCODING = 'UTF8' +TABLESPACE = pg_default +LC_COLLATE = 'pl_PL.UTF-8' +LC_CTYPE = 'pl_PL.UTF-8' +CONNECTION LIMIT = -1; \ No newline at end of file diff --git a/documents-explorer/pom.xml b/documents-explorer/pom.xml new file mode 100644 index 0000000..14315e9 --- /dev/null +++ b/documents-explorer/pom.xml @@ -0,0 +1,67 @@ + + 4.0.0 + + eu.moose + documents-explorer + war + 1.0-SNAPSHOT + + documents-explorer + + + + com.sun.faces + jsf-api + 2.2.19 + + + + com.sun.faces + jsf-impl + 2.2.19 + + + + javax.servlet + jstl + 1.2 + + + + javax.servlet + javax.servlet-api + 4.0.1 + + + + log4j + log4j + 1.2.17 + + + + junit + junit + 3.8.1 + test + + + + + documents-explorer + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + + 1.8 + 1.8 + + + + + diff --git a/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/ApplicationBean.java b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/ApplicationBean.java new file mode 100644 index 0000000..2aa771b --- /dev/null +++ b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/ApplicationBean.java @@ -0,0 +1,102 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * Copyright 2019 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.documents.explorer; + +import org.apache.log4j.Logger; + +import javax.annotation.PostConstruct; +import javax.faces.bean.ApplicationScoped; +import javax.faces.bean.ManagedBean; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.nio.file.Paths; +import java.text.MessageFormat; +import java.util.Properties; + +/** + * Bean used for application initialization. + */ +@ApplicationScoped +@ManagedBean(eager = true, name = "applicationBean") +public class ApplicationBean { + + private static final Logger logger = Logger.getLogger( ApplicationBean.class ); + + /** + * Path to user configuration. + */ + private static final String CUSTOM_PROPERTIES_PATH = "/opt/documents-explorer/application.properties"; + + /** + * The path to the directory used to store documents. + */ + private String documentsDirectory; + + /** + * Reads the configuration from the configuration file. + */ + @PostConstruct + public void readProperties() { + Properties properties = new Properties( ); + properties.putAll( loadDefaultProperties() ); + properties.putAll( loadCustomProperties() ); + + final String directoryPath = properties.getProperty("documents.directory"); + final File directory = Paths.get(directoryPath).toFile(); + if (!directory.exists()) { + if (!directory.mkdirs()) { + logger.error( "Create directory error" ); + documentsDirectory = ""; + } + } + else + documentsDirectory = directoryPath; + + logger.info(MessageFormat.format("Using the {0} directory for file storing.", documentsDirectory)); + } + + /** + * Load custom properties. + * + * @return properties. + */ + private Properties loadCustomProperties() { + try (InputStream in = new FileInputStream( CUSTOM_PROPERTIES_PATH )) { + final Properties properties = new Properties( ); + properties.load( in ); + return properties; + } + catch (Exception e) { + logger.error( "The application encountered an error while loading the custom properties.", e ); + return new Properties( ); + } + } + + /** + * Load default properties. + * + * @return properties. + */ + private Properties loadDefaultProperties() { + try (InputStream in = getClass().getClassLoader().getResourceAsStream("application.properties")) { + final Properties properties = new Properties( ); + properties.load( in ); + return properties; + } + catch (Exception e) { + logger.error( "The application encountered an error while loading the default properties.", e ); + return new Properties( ); + } + } + + /** + * @return Path to the directory with files. + */ + public String getDocumentsDirectory() { + return documentsDirectory; + } +} diff --git a/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/FilesBean.java b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/FilesBean.java new file mode 100644 index 0000000..87a31f8 --- /dev/null +++ b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/FilesBean.java @@ -0,0 +1,127 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * Copyright 2019 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.documents.explorer.bean; + +import eu.mooseinc.documents.explorer.ApplicationBean; +import org.apache.log4j.Logger; + +import javax.annotation.PostConstruct; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.ManagedProperty; +import javax.faces.bean.RequestScoped; +import javax.faces.context.ExternalContext; +import javax.faces.context.FacesContext; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * Bean for operations related to files. + */ +@RequestScoped +@ManagedBean(name = "FilesBean") +public class FilesBean { + private static final Logger logger = Logger.getLogger( FilesBean.class ); + + private final List documents = new ArrayList<>(); + + @ManagedProperty(value="#{applicationBean}") + private ApplicationBean application; + + @PostConstruct + public void init() { + try (Stream stream = Files.walk(Paths.get(application.getDocumentsDirectory()))) { + this.documents.addAll( stream + .filter(Files::isRegularFile) + .map(file -> file.getFileName().toString()) + .collect(Collectors.toList()) + ); + } + catch (final IOException e) { + logger.error( "Read documents error", e ); + } + } + + /** + * Finds uploaded files on the disk. + * + * @return List of files available for download. + */ + public List getDocuments() { + return documents; + } + + /** + * Returns requested file. + * + * @param documentName The name of the requested file. + */ + public void downloadDocument(final String documentName) { + final FacesContext facesContext = FacesContext.getCurrentInstance(); + final ExternalContext externalContext = facesContext.getExternalContext(); + + final Path pathFile = Paths.get(application.getDocumentsDirectory() + File.separator + documentName); + final File file = pathFile.toFile(); + + if (!file.exists()) { + externalContext.responseReset(); + externalContext.setResponseStatus(404); + return; + } + + externalContext.responseReset(); + + try { + externalContext.setResponseContentType(Files.probeContentType(pathFile)); // mimetype + externalContext.setResponseContentLength((int) file.length()); // length + + final String attachmentName = MessageFormat.format("attachment; filename=\"{0}\"", documentName); + externalContext.setResponseHeader("Content-Disposition", attachmentName); + + final OutputStream outputStream = externalContext.getResponseOutputStream(); + Files.copy(pathFile, outputStream); + + facesContext.responseComplete(); + } catch (final IOException e) { + logger.error( "Error ", e ); + } + } + + /** + * Deletes the file from the disk. + * + * @param documentName The name of the file to be deleted. + * + * @throws IOException Exception thrown during redirection. + */ + public void deleteDocument(final String documentName, final HttpServletRequest request) throws IOException { + if (!request.isUserInRole("admin")) { + final ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); + externalContext.responseReset(); + externalContext.setResponseStatus(403); + return; + } + + final File fileToDelete = Paths.get(application.getDocumentsDirectory() + File.separator + documentName).toFile(); + if (fileToDelete.exists() && fileToDelete.isFile()) + Files.delete( fileToDelete.toPath() ); + + FacesContext.getCurrentInstance().getExternalContext().redirect("index.jsp"); + } + + public void setApplication( ApplicationBean application ) { + this.application = application; + } +} diff --git a/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UploadDocumentBean.java b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UploadDocumentBean.java new file mode 100644 index 0000000..673b6a3 --- /dev/null +++ b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UploadDocumentBean.java @@ -0,0 +1,70 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * Copyright 2019 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.documents.explorer.bean; + +import eu.mooseinc.documents.explorer.ApplicationBean; +import org.apache.log4j.Logger; + +import javax.faces.bean.ManagedBean; +import javax.faces.bean.ManagedProperty; +import javax.faces.context.ExternalContext; +import javax.faces.context.FacesContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.Part; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; + +/** + * Bean for file upload. + */ +@ManagedBean(name = "UploadFileBean") +public class UploadDocumentBean { + + private static final Logger logger = Logger.getLogger( UploadDocumentBean.class ); + + /** + * The part of the form containing the file. + */ + private Part document; + + @ManagedProperty(value="#{applicationBean}") + private ApplicationBean application; + + /** + * Saves the sent file. + */ + public void save(final HttpServletRequest request) throws IOException { + if (!request.isUserInRole("admin")) { + final ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); + externalContext.responseReset(); + externalContext.setResponseStatus(403); + return; + } + + try (final InputStream input = document.getInputStream()) { + Files.copy(input, new File(application.getDocumentsDirectory(), document.getSubmittedFileName()).toPath()); + } + catch (final IOException e) { + logger.error( "Error", e ); + } + + FacesContext.getCurrentInstance().getExternalContext().redirect("index.jsp"); + } + + public Part getDocument() { + return document; + } + + public void setDocument(final Part document) { + this.document = document; + } + + public void setApplication( ApplicationBean application ) { + this.application = application; + } +} diff --git a/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UserBean.java b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UserBean.java new file mode 100644 index 0000000..bffc01c --- /dev/null +++ b/documents-explorer/src/main/java/eu/mooseinc/documents/explorer/bean/UserBean.java @@ -0,0 +1,41 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * Copyright 2019 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.documents.explorer.bean; + +import java.io.IOException; +import java.security.Principal; +import javax.faces.bean.ManagedBean; +import javax.faces.bean.SessionScoped; +import javax.faces.context.FacesContext; + +/** + * Bean for operations related to users. + */ +@SessionScoped +@ManagedBean(name = "UserBean") +public class UserBean { + + /** + * Gets the username from the faces context. + * + * @return Name of the currently authenticated user. + */ + public String getUserName() { + final Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal(); + + return principal != null ? principal.getName() : ""; + } + + /** + * Logs out the user. + * + * @throws IOException Exception thrown during redirection. + */ + public void logout() throws IOException { + FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); + FacesContext.getCurrentInstance().getExternalContext().redirect("index.jsp"); + } +} diff --git a/documents-explorer/src/main/resources/application.properties b/documents-explorer/src/main/resources/application.properties new file mode 100644 index 0000000..393895b --- /dev/null +++ b/documents-explorer/src/main/resources/application.properties @@ -0,0 +1,6 @@ +################################################################################################################################## +# Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością +# Copyright 2019 Moose Spółka z ograniczoną odpowiedzialnością +################################################################################################################################## + +documents.directory=/tmp/documents-explorer \ No newline at end of file diff --git a/documents-explorer/src/main/resources/log4j.properties b/documents-explorer/src/main/resources/log4j.properties new file mode 100644 index 0000000..52beef9 --- /dev/null +++ b/documents-explorer/src/main/resources/log4j.properties @@ -0,0 +1,13 @@ +################################################################################################################################## +# Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością +# Copyright 2019 Moose Spółka z ograniczoną odpowiedzialnością +################################################################################################################################## + +# Root logger option +log4j.rootLogger=DEBUG, stdout + +# Redirect log messages to console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n diff --git a/documents-explorer/src/main/webapp/WEB-INF/web.xml b/documents-explorer/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..ea3ff7b --- /dev/null +++ b/documents-explorer/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,70 @@ + + + + IDoCa + + + index.xhtml + + + + Faces Servlet + javax.faces.webapp.FacesServlet + 1 + + + + Faces Servlet + *.xhtml + + + + Faces Servlet + *.jsp + + + + user + + + + admin + + + + + App requires authentication + /* + GET + POST + + + + admin + user + + + + NONE + + + + + + Allowed resources + /javax.faces.resource/* + + + + + FORM + file + + /login.xhtml + /login.xhtml?failed=true + + + diff --git a/documents-explorer/src/main/webapp/index.xhtml b/documents-explorer/src/main/webapp/index.xhtml new file mode 100644 index 0000000..87aab8c --- /dev/null +++ b/documents-explorer/src/main/webapp/index.xhtml @@ -0,0 +1,110 @@ + + + + + + + + List of documents + + + + + + + + +
+ +
+
+ + + + + + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
No.NameOptions
No files
+ + + + + + + + + + + +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/documents-explorer/src/main/webapp/login.xhtml b/documents-explorer/src/main/webapp/login.xhtml new file mode 100644 index 0000000..c15086a --- /dev/null +++ b/documents-explorer/src/main/webapp/login.xhtml @@ -0,0 +1,70 @@ + + + + + + + + Login form + + + + + + +
+
+
+
+ +
+ + +
+
+
+ + + + +
+ \ No newline at end of file diff --git a/documents-explorer/src/main/webapp/resources/css/bootstrap.min.css b/documents-explorer/src/main/webapp/resources/css/bootstrap.min.css new file mode 100644 index 0000000..92e3fe8 --- /dev/null +++ b/documents-explorer/src/main/webapp/resources/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.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-lg-auto,.col-md,.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-md-auto,.col-sm,.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-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{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);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;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}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive 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-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/documents-explorer/src/main/webapp/resources/css/style.css b/documents-explorer/src/main/webapp/resources/css/style.css new file mode 100644 index 0000000..cfdf471 --- /dev/null +++ b/documents-explorer/src/main/webapp/resources/css/style.css @@ -0,0 +1,24 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * Copyright 2019 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +.login-box { + border: 1px solid gray; +} + +.logo { + height: 1.75rem; +} + +.table-icon { + height: 1.5rem; +} + +.top-icon { + height: 2.5rem; +} + +.upload-button { + -webkit-appearance: initial; +} diff --git a/documents-explorer/src/main/webapp/resources/img/file-download.svg b/documents-explorer/src/main/webapp/resources/img/file-download.svg new file mode 100644 index 0000000..b0dfa46 --- /dev/null +++ b/documents-explorer/src/main/webapp/resources/img/file-download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/documents-explorer/src/main/webapp/resources/img/file-upload.svg b/documents-explorer/src/main/webapp/resources/img/file-upload.svg new file mode 100644 index 0000000..49b0a88 --- /dev/null +++ b/documents-explorer/src/main/webapp/resources/img/file-upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/documents-explorer/src/main/webapp/resources/img/icoca.png b/documents-explorer/src/main/webapp/resources/img/icoca.png new file mode 100644 index 0000000000000000000000000000000000000000..74345a82bbb810491edfff69e2cef33483769fde GIT binary patch literal 15936 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

cwh4}|XeV8|C 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 literal 0 HcmV?d00001 diff --git a/documents-explorer/src/main/webapp/resources/img/trash-alt.svg b/documents-explorer/src/main/webapp/resources/img/trash-alt.svg new file mode 100644 index 0000000..6305280 --- /dev/null +++ b/documents-explorer/src/main/webapp/resources/img/trash-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/documents-explorer/src/main/webapp/resources/js/bootstrap.min.js b/documents-explorer/src/main/webapp/resources/js/bootstrap.min.js new file mode 100644 index 0000000..c4c0d1f --- /dev/null +++ b/documents-explorer/src/main/webapp/resources/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right

',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:''}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&((e?e.ownerDocument||e:m)!==T&&C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!S[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=N),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+be(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){S(t,!0)}finally{s===N&&e.removeAttribute("id")}}}return g(t.replace(F,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[N]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),m!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=N,!T.getElementsByName||!T.getElementsByName(N).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+N+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+N+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===m&&y(m,e)?-1:t===T||t.ownerDocument===m&&y(m,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===T?-1:t===T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&C(e),p.matchesSelector&&E&&!S[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){S(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=d[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&d(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,n,r){return x(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),D.test(r[1])&&E.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,j=E(v);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i,he={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;nx",b.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function Ae(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(G.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=G.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),G.set(this,i,r),t=o(this,i),this[i](),r!==(n=G.get(this,i))||t?G.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(G.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,i)&&E.event.add(e,i,Ee)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(ie,i),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(I)||[""]).length;while(l--)p=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=E.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=E.event.special[p]||{},c=E.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),E.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(p=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=E.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)E.event.remove(e,p+t[l],n,r,!0);E.isEmptyObject(u)&&G.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=E.event.fix(e),u=new Array(arguments.length),l=(G.get(this,"events")||{})[s.type]||[],c=E.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,Le=/\s*$/g;function Oe(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(G.hasData(e)&&(o=G.access(e),a=G.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(b.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(c),r=0,i=(o=ge(e)).length;r
",2===pt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(b.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),x(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||ie})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return z(this,function(e,t,n){var r;if(w(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=ze(b.pixelPosition,function(e,t){if(t)return t=Fe(e,n),Me.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return z(this,function(e,t,n){var r;return w(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),le({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=fe({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},le(n,m,$(v)),le(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ge.FLIP:p=[n,i];break;case ge.CLOCKWISE:p=G(n);break;case ge.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=fe({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!me),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=fe({},E,e.attributes),e.styles=fe({},m,e.styles),e.arrowStyles=fe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ue}); +//# sourceMappingURL=popper.min.js.map diff --git a/exported-forms/industry-application-for-membership.xhtml b/exported-forms/industry-application-for-membership.xhtml new file mode 100644 index 0000000..29023ac --- /dev/null +++ b/exported-forms/industry-application-for-membership.xhtml @@ -0,0 +1,4967 @@ + + + INDUSTRY APPLICATION FOR MEMBERSHIP + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + industry-application-for-membership + industry-application-for-membership-form + INDUSTRY APPLICATION FOR MEMBERSHIP + + + [{ "path": "section-4/grid-55", "iteration-name": "grid-55-iteration" },{ "path": "section-4/grid-179", "iteration-name": "grid-179-iteration" },{ "path": "section-4/grid-72", "iteration-name": "grid-72-iteration" },{ "path": "section-4/grid-76", "iteration-name": "grid-76-iteration" },{ "path": "section-4/grid-180", "iteration-name": "grid-180-iteration" },{ "path": "section-4/grid-89", "iteration-name": "grid-89-iteration" },{ "path": "section-4/grid-79", "iteration-name": "grid-79-iteration" },{ "path": "section-4/grid-81", "iteration-name": "grid-81-iteration" },{ "path": "section-4/grid-137", "iteration-name": "grid-137-iteration" },{ "path": "section-4/grid-142", "iteration-name": "grid-142-iteration" },{ "path": "section-4/grid-235", "iteration-name": "grid-235-iteration" },{ "path": "section-4/grid-157", "iteration-name": "grid-157-iteration" },{ "path": "section-4/grid-232", "iteration-name": "grid-232-iteration" },{ "path": "section-4/grid-189", "iteration-name": "grid-189-iteration" },{ "path": "section-4/grid-230", "iteration-name": "grid-230-iteration" },{ "path": "section-4/grid-175", "iteration-name": "grid-175-iteration" },{ "path": "section-80/grid-194", "iteration-name": "grid-194-iteration" },{ "path": "section-80/grid-221", "iteration-name": "grid-221-iteration" },{ "path": "section-80/grid-229", "iteration-name": "grid-229-iteration" }] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + e.g. http://somewebsite.com + Invalid website URL + + + + + + + <div><strong>3. Grievance Mechanism Procedures</strong></div> + + + <div> +<p>Article 66 and 67 of the Code states:</p> +<p style="padding-left: 30px;"><em>Signatory Companies will establish grievance procedures to address claims alleging failure by the Company to respect the principles contained in this Code brought by Personnel or by third parties.<br /></em><br /><em>Signatory Companies will:</em></p> +<p style="padding-left: 60px;"><em>a) establish procedures for their Personnel and for <a title="Third parties include all external stakeholders the company grievance mechanism is intended to serve. This may for example be clients, suppliers, outsource partners, communities in a company’s area of operation, non-governmental organizations." onclick="return false;" style="cursor:help" href="#">third parties</a> to report allegations of improper and/or illegal conduct to designated Personnel, including such acts or omissions that would violate the principles contained in this Code. Procedures must be fair, accessible and offer effective remedies, including recommendations for the prevention of recurrence. They shall also facilitate reporting by persons with reason to believe that improper or illegal conduct, or a violation of this Code, has occurred or is about to occur, of such conduct, to designated individuals within a Company and, where appropriate, to competent authorities;</em><br /><em>b) <a onclick="return false;" style="cursor:help;" title="A company grievance mechanism should be published on a publically accessible website. Reference to the grievance mechanism should be made on the main page of the website and easy to find by internal and external stakeholders." href="#">publish details</a> of their grievance mechanism on a publically accessible website;</em><br /><em>c) investigate allegations promptly, impartially and with due consideration to confidentiality;</em><br /><em>d) keep records about any such allegations, findings or disciplinary measures. Except where prohibited or protected by applicable law, such records should be made available to a Competent Authority on request;</em><br /><em>e) cooperate with official investigations, and not participate in or tolerate from their Personnel, the impeding of witnesses, testimony or investigations;</em><br /><em>f) take appropriate disciplinary action, which could include termination of employment in case of a finding of such violations or unlawful behaviour; and</em><br /><em>g) ensure that their Personnel who report wrongdoings in good faith are provided protection against any retaliation for making such reports, such as shielding them from unwarranted or otherwise inappropriate disciplinary measures, and that matters raised are examined and acted upon without undue delay.</em></p> +</div> + + + + + + + Provide a summary or upload a supporting document + + + <div><strong>Please upload any supporting document(s) here:</strong></div> + + + + + + + <div><strong>2. Personnel Screening and Vetting Programme</strong></div> + + + <div>Article 48 of the Code states:</div> +<div> </div> +<div style="padding-left: 30px;"><em><span style="line-height: 1.5em;">Signatory Companies will establish and maintain internal policies and procedures to determine the suitability of applicants, or Personnel, to carry weapons as part of their duties. At a minimum, this will include checks that they have not: </span></em> +<p style="padding-left: 30px;"><em>a) been convicted of a crime that would indicate that the individual lacks the character and fitness to perform security services pursuant to the principles of this Code;</em><br /><em>b) been dishonourably discharged;</em><br /><em>c) had other employment or engagement contracts terminated for documented violations of one or more of the principles contained in this Code; or</em><br /><em>d) had a history of other conduct that, according to an objectively reasonable standard, brings into question their fitness to carry a weapon. </em></p> +<p><em>For the purposes of this paragraph, disqualifying crimes may include, but are not limited to, battery, murder, arson, fraud, rape, sexual abuse, organized crime, bribery, corruption, perjury, torture, kidnapping, drug trafficking or trafficking in persons. This provision shall not override any law restricting whether a crime may be considered in evaluating an applicant. Nothing in this section would prohibit a Company from utilizing more stringent criteria.</em></p> +</div> + + + + + Provide a summary or upload a supporting document + + + <div><strong>Please upload any supporting document(s) here:</strong></div> + + + + + + + + + example + + + + + other + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <div>Under the ICoCA Certification Procedure, the Board assesses and recognizes standards that are consistent with the Code and defines, for each standard, additional information relative to the human rights and humanitarian law impact of PSC operations that it needs to assess whether a company's systems and policies meet the requirements of the Code. Members must then become certified to a standard recognized by the Board, and supply the additional information defined by the Board, in order to become certified to the Code.</div> +<p>Please note that under the Articles of Association, member PSCs must become certified under the Certification Procedure within before 30 September 2018.</p> + + + <div><strong>1. Which national or international standard does the Applicant have or plan to become certified to?</strong></div> + + + + + + + <div><strong>7. Did any civil or criminal proceeding lead to a judgement against, finding of liability against, or conviction of the Applicant in the last 5 years? </strong></div> + + + + + + + + + + + + + + <div><strong>Please upload any supporting documents here:</strong></div> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Only numeric values are accepted + + + + + + + <div><strong>5. Parent Company/Ownership Information</strong></div> + + + <div>Please provide details on the structure and ownership of the company:</div> + + + + + + + <div><strong>8. Has the Applicant or any subsidiary been the subject of any non-judicial grievance proceedings related to alleged human rights abuses in the last 5 years?</strong></div> + + + + + + + + + + + + + + + + + + <div><strong>Please upload any supporting documents here:</strong></div> + + + + + + + <div>Section IV - Legal Disclosures</div> + + + <div><strong>6. Has the Applicant or any subsidiary been the subject of any civil or criminal proceedings involving allegations of human rights abuses in the last 5 years?</strong></div> + + + + + + + + + + + + + + + + + + + <div><strong>Please upload any supporting documents here:</strong></div> + + + + + + + + + + + + <div><strong>Please upload relevant documentation:</strong></div> + + + + + + + + + + + + + + + + 1 + + + + 2 + + + + 3 + + + + + + + + <div><strong>3. Clients</strong></div> + + + <div><strong>Type</strong></div> + + + <div><strong>Land</strong></div> + + + <div><strong>Maritime</strong></div> + + + <div><strong>Comments</strong></div> + + + <div><span style="line-height: 1.5em;">Government</span></div> + + + + + + + + + + + + + <div>Non-State Corporate Clients</div> + + + + + + + + + + + + + <div>Private person(s)</div> + + + + + + + + + + + + + <div>International and Regional Organizations (including UN, etc.)</div> + + + + + + + + + + + + + <div>NGOs</div> + + + + + + + + + + + + + <div>Other</div> + + + + + + + + + + + + + <div>Section III - Financial Disclosures</div> + + + <div><strong style="line-height: 1.5em;">4. Total Revenue </strong><span style="line-height: 1.5em;">(including for all subsidiaries)</span></div> + + + <div>The revenue determines the <a href="https://www.icoca.ch/en/get-involved" target="_blank">membership subscription</a> level of the Applicant.</div> + + + + + + + <div><strong>Financial Year</strong></div> + + + <div><strong>Currency</strong></div> + + + <div><strong>Total Revenue</strong></div> + + + + + + + + + + + + + + + + + + + + + + + + <div><strong>5. Financial Capacity</strong></div> + + + <p>Article 69 of the Code states:</p> +<p><em>Signatory Companies will ensure that they have sufficient financial capacity in place at all times to meet reasonably anticipated commercial liabilities for damages to any person in respect of personal injury, death or damage to property. Sufficient financial capacity may be met by customer commitments, adequate insurance coverage (such as by employer’s liability and public liability coverage appropriately sized for the scale and scope of operations of the Signatory Company) or self-insurance/retention. Where it is not possible to obtain suitable insurance cover, the Signatory Company will make alternative arrangements to ensure that it is able to meet such liabilities.</em></p> +<p></p> + + + + + + + <div>Please describe the types and amounts of insurance sufficient to cover commercial liabilities: </div> + + + + + + + 1 + + + + 2 + + + + 3 + + + + + + + + + + + + + + + + + only digits are accepted + + + <div><strong>2. Contractors &amp; Subcontractors</strong></div> + + + <div>Please list any contractors and/or subcontractors involved in the operations listed above. </div> + + + + + + + + example + + + + + + + + + + + + + + + + + + + + + + + + + <div>Section II - Operations</div> + + + <div><strong>1. Operation Locations &amp; Personnel</strong></div> + + + + + + + + + + + + + + + + + + <div><strong>6. Scope of Applicant and Subsidiaries</strong></div> + + + <div>Please list any subsidiary entities that are owned or controlled by the Applicant. If they are not being included within the scope of this application, please explain why:</div> + + + + + + + + + + + <div><strong>7. Please provide any other relevant documentation (e.g. public company annual reports)</strong></div> + + + + + + + <div><strong>Please provide documentation showing the Applicant’s ownership and corporate structure including information on the company’s senior management (e.g. organizational chart) here:</strong></div> + + + + + + + + + + + + + + + + + + + + <div><strong>3. Main Point of Contact</strong> (the person who has authority to vote on behalf of the Applicant)</div> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <div><strong>4. Other Contacts</strong> (staff/management who should be copied on Association communications)</div> + + + + + + + + + + + + + + + + example + + + + + + + + + + + <p><strong>The undersigned affirms, on behalf of the entity applying for ICoCA membership (the “Applicant”),</strong></p> +<p style="padding-left: 30px;">(1) that Applicant is committing to implement and adhere to all of the obligations and requirements of the International Code of Conduct for Private Security Service Providers,</p> +<p style="padding-left: 30px;">(2) that Applicant acknowledges and accepts the Articles of Association and the procedures and rules adopted by the ICoCA in accordance with those Articles of Association;</p> +<p style="padding-left: 30px;">(3) that Applicant hereby commits to obtain and provide evidence of certification in accordance with Article 11 of the Articles of Association;</p> +<p style="padding-left: 30px;">(4) that Applicant hereby commits to submit to reporting, monitoring and performance assessments in accordance with Article 12 of the Articles of Association;</p> +<p style="padding-left: 30px;">(5) that Applicant hereby commits to participate in a complaints process developed by the ICoCA in accordance with Article 13 of the Articles of Association;</p> +<p style="padding-left: 30px;">(6) that Applicant understands and agrees to pay joining fees and dues assessed at the time of application to the Association in a timely manner;</p> +<p style="padding-left: 30px;">(7) that Applicant agrees that continued membership in the Association is contingent upon the Applicant meeting and maintaining the obligations and requirements contained in the ICoC, the Articles of Association, and the rules and procedures adopted by the Association;</p> +<p style="padding-left: 30px;">(8) that the Applicant has reviewed the completed Application for Membership, Registration Statement, Implementation plan and any supporting documents submitted along with them and that all information submitted to the Secretariat as part of the membership application process is accurate and truthful to the best of Applicant’s knowledge, and that no material information has been omitted; and</p> +<p style="padding-left: 30px;">(9) that I am duly authorized to sign this Application for Membership and to make the above statements on behalf of the Applicant.</p> + + + <div>Signed: _____________________<br /><br /><br /></div> +<div>Printed name: ________________<br /><br /><br />Title: _______________________<br /><br /><br />Applicant Name: ______________</div> + + + <div> </div> +<div> </div> +<div><span>Please print this page using PDF button, sign it and attach document using field below</span></div> + + + + + + + + + + + + + + + + + + + <div> +<div>(Please follow the steps set out below carefully in order to complete your application.)<br /><br />Application Form<br />The Industry Application for Membership is comprised of the following Parts and Sections.</div> +<div> </div> +<div>Part 1 – Registration Statement<br /> Section I – Corporate Information and Legal Status<br /> Section II – Operations<br /> Section III – Financial Disclosures<br /> Section IV – Legal Disclosures<br /> Part 2 - Implementation Plan<br /> Part 3 – Application Statement<br /><br />Please complete <strong>all questions</strong> to avoid delays in the processing of your Membership Application.<br /><br />Submission<br />The completed application must be submitted to the Secretariat via this form.<br /><br /><strong>Please do not email completed application forms to the Secretariat.</strong><br /><br />Joining Fee<br />The non-refundable joining fee of USD 1,000 must be paid to ICoCA before the application can be reviewed. Please see the <a href="https://www.icoca.ch/sites/default/files/uploads/ICoCA%20Joining%20Fee%20Information%202015.pdf" target="_blank">joining fee document for the bank details</a>.<br /><br />Review<br />The Secretariat will review the completed Application and provide a summary and recommendation to the ICoCA Board of Directors who will make the final decision regarding Membership. As provided for in the Membership Requirements and Information Security and Confidentiality and NDA policies, no confidential information will be disclosed to the Board of Directors.<br /><br /><strong>Should you have any questions regarding the application or process, please send an email to <a href="mailto:secretariat@icoca.ch">secretariat@icoca.ch</a>.</strong></div> +</div> + + + + + + + + company-self-assessment + + + + + certification + + + + + membership-application + + + + + monitoring + + + + + other + + + + + + + + + + industry + + + + + civil-society-organisations + + + + + governments + + + + + observers + + + + + + + + <div>Section I - Corporate Information and Legal Status</div> + + + <div><strong>1. Company Details</strong></div> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + example + + + + + + + + + + + + + e.g. http://somewebsite.com + + + + + + + + example + + + + + + + + + + + + + + + + + + + + example + + + + + + + <div><strong>2. Other Office Locations</strong></div> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <sql:config xmlns:sql="http://orbeon.org/oxf/xml/sql"> + <sql:datasource>postgresql</sql:datasource> + <sql:query>SELECT iso_alpha3 as iso, name FROM dropdown_country</sql:query> + + </sql:config> + + + + <sql:config xmlns:sql="http://orbeon.org/oxf/xml/sql"> + <sql:datasource>postgresql</sql:datasource> + <sql:query>SELECT name FROM dropdown_member_type</sql:query> + + </sql:config> + + + + <sql:config xmlns:sql="http://orbeon.org/oxf/xml/sql"> + <sql:datasource>postgresql</sql:datasource> + <sql:query>select distinct alphabetic_code as name, currency as currency from dropdown_currency order by alphabetic_code</sql:query> + + </sql:config> + + + + <sql:config xmlns:sql="http://orbeon.org/oxf/xml/sql"> + <sql:datasource>postgresql</sql:datasource> + <sql:query>SELECT name FROM dropdown_certificate_standard</sql:query> + + </sql:config> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/exported-forms/readme.md b/exported-forms/readme.md new file mode 100644 index 0000000..27d540b --- /dev/null +++ b/exported-forms/readme.md @@ -0,0 +1 @@ +Folder contains forms (form sources) exported from Form Builder \ No newline at end of file diff --git a/integration-module/.gitignore b/integration-module/.gitignore new file mode 100644 index 0000000..38f1079 --- /dev/null +++ b/integration-module/.gitignore @@ -0,0 +1,19 @@ +*.sw? +.#* +*# +*~ +.classpath +.project +.settings +bin +build +target +dependency-reduced-pom.xml +*.sublime-* +/scratch +.gradle +README.html +*.iml +.idea +out + diff --git a/integration-module/.mvn/wrapper/maven-wrapper.jar b/integration-module/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..5fd4d5023f1463b5ba3970e33c460c1eb26d748d GIT binary patch literal 49502 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%0A$pwhjXzyA0ZzErH{1@M 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 OJOEd-=rxTO#Qy`$*1Hh^ literal 0 HcmV?d00001 diff --git a/integration-module/.mvn/wrapper/maven-wrapper.properties b/integration-module/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..c954cec --- /dev/null +++ b/integration-module/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip diff --git a/integration-module/META-INF/MANIFEST.MF b/integration-module/META-INF/MANIFEST.MF new file mode 100644 index 0000000..de46c19 --- /dev/null +++ b/integration-module/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: hycom.Application + diff --git a/integration-module/WEB-INF/ibm-web-ext.xml b/integration-module/WEB-INF/ibm-web-ext.xml new file mode 100644 index 0000000..aa42ffa --- /dev/null +++ b/integration-module/WEB-INF/ibm-web-ext.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/integration-module/build.gradle b/integration-module/build.gradle new file mode 100644 index 0000000..c0c77b7 --- /dev/null +++ b/integration-module/build.gradle @@ -0,0 +1,32 @@ +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.3.RELEASE") + } +} + +apply plugin: 'java' +apply plugin: 'eclipse' +apply plugin: 'idea' +apply plugin: 'org.springframework.boot' + +jar { + baseName = 'integration-module' + version = '0.1.0' +} + +repositories { + mavenCentral() +} + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +dependencies { + compile("org.springframework.boot:spring-boot-starter-web") + testCompile('org.springframework.boot:spring-boot-starter-test') + testCompile('com.jayway.jsonpath:json-path') +} + diff --git a/integration-module/gradle/wrapper/gradle-wrapper.jar b/integration-module/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..05ef575b0cd0173fc735f2857ce4bd594ce4f6bd GIT binary patch literal 53637 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 t9m@SZ!E*7&jsr?!t7TL-WYI4eM@gAug8 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/integration-module/gradlew.bat b/integration-module/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/integration-module/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/integration-module/manifest.yml b/integration-module/manifest.yml new file mode 100644 index 0000000..d9bc363 --- /dev/null +++ b/integration-module/manifest.yml @@ -0,0 +1,9 @@ +--- +applications: +- name: integration-module + memory: 256M + instances: 1 + host: rest-service + domain: guides.spring.io + path: build/libs/integration-module-0.1.0.jar + diff --git a/integration-module/mvnw b/integration-module/mvnw new file mode 100644 index 0000000..a1ba1bf --- /dev/null +++ b/integration-module/mvnw @@ -0,0 +1,233 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/integration-module/mvnw.cmd b/integration-module/mvnw.cmd new file mode 100644 index 0000000..2b934e8 --- /dev/null +++ b/integration-module/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% \ No newline at end of file diff --git a/integration-module/pom.xml b/integration-module/pom.xml new file mode 100644 index 0000000..ef70961 --- /dev/null +++ b/integration-module/pom.xml @@ -0,0 +1,84 @@ + + + 4.0.0 + + org.springframework + integration-module + + 1.2.0 + + war + + + org.springframework.boot + spring-boot-starter-parent + 1.5.3.RELEASE + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + com.jayway.jsonpath + json-path + test + + + org.postgresql + postgresql + 9.4-1206-jdbc42 + + + commons-dbcp + commons-dbcp + 1.4 + runtime + + + org.springframework + spring-jdbc + 4.3.6.RELEASE + + + org.apache.commons + commons-lang3 + 3.0 + + + + + 1.8 + hycom.Application + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-releases + https://repo.spring.io/libs-release + + + + + spring-releases + https://repo.spring.io/libs-release + + + diff --git a/integration-module/src/main/java/hycom/Application.java b/integration-module/src/main/java/hycom/Application.java new file mode 100644 index 0000000..7170bc7 --- /dev/null +++ b/integration-module/src/main/java/hycom/Application.java @@ -0,0 +1,25 @@ +package hycom; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.web.HttpMessageConverters; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.http.converter.ByteArrayHttpMessageConverter; + +@SpringBootApplication +@Configuration +@PropertySource("file:///opt/orbeon/integration.properties") +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Bean + public HttpMessageConverters customConverters() { + ByteArrayHttpMessageConverter arrayHttpMessageConverter = new ByteArrayHttpMessageConverter(); + return new HttpMessageConverters(arrayHttpMessageConverter); + } +} diff --git a/integration-module/src/main/java/hycom/FormsController.java b/integration-module/src/main/java/hycom/FormsController.java new file mode 100644 index 0000000..628b730 --- /dev/null +++ b/integration-module/src/main/java/hycom/FormsController.java @@ -0,0 +1,155 @@ +package hycom; + +import hycom.model.Form; +import hycom.model.FormsResoult; +import hycom.model.UsersResoult; +import hycom.service.DatabaseService; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class FormsController { + + @Autowired + DatabaseService databaseService; + + public final String USER = "username=c2VydmljZVVzZXI="; + public final String PASSWORD = "password=UTJyVDg5JHE="; + + @RequestMapping(value = "/rest/form/{id}", method = RequestMethod.GET, headers = {USER, PASSWORD}) + public @ResponseBody + Form getForm(@PathVariable("id") int formId) { + return databaseService.getForm(formId); + } + + @RequestMapping(value = "/rest/forms", method = RequestMethod.GET, headers = {USER, PASSWORD}) + public @ResponseBody + List
getForms() { + return databaseService.getForms(); + } + + + @RequestMapping(value = "/rest/forms/{offset}/{limit}/{fromDate}/{toDate}/{formName}/{category}/{pillar}/{name}", method = RequestMethod.GET, headers = {USER, PASSWORD}) + public @ResponseBody + FormsResoult getForms(@PathVariable("offset") int offset, @PathVariable("limit") int limit, + @PathVariable("fromDate") String fromDate, @PathVariable("toDate") String toDate, + @PathVariable("formName") String formName, @PathVariable("category") String category, + @PathVariable("pillar") String pillar, @PathVariable("name") String name) { + + FormsResoult formsResoult = new FormsResoult(); + formsResoult.setForms( + databaseService.getFormsUsingPagination(offset, limit, fromDate, toDate, formName, category, pillar, name)); + formsResoult.setCount(databaseService.getFormsCount(fromDate, toDate, formName, category, pillar, name)); + return formsResoult; + } + + @RequestMapping(value = "/rest/users", method = RequestMethod.GET, headers = {USER, PASSWORD}) + @ResponseBody + private UsersResoult getUsers() { + UsersResoult usersResoult = new UsersResoult(); + usersResoult.setUsers(databaseService.getUsersContainsAttachments()); + usersResoult.setCount(Long.valueOf(usersResoult.getUsers().size())); + return usersResoult; + } + + + @RequestMapping(value = "/rest/attachments/{userName:.+}", method = RequestMethod.GET, headers = {USER, PASSWORD}) + public @ResponseBody + ResponseEntity getAttachments(@PathVariable("userName") String userName) { + + try { + File file = new File(databaseService.getAttachments(userName)); + Path path = Paths.get(file.getAbsolutePath()); + ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(path)); + + HttpHeaders headers = new HttpHeaders(); + headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); + headers.add("Pragma", "no-cache"); + headers.add("Expires", "0"); + headers.add("Content-Disposition", "attachment, filename=\"" + userName + "\".zip"); + + return ResponseEntity.ok().headers(headers).contentLength(file.length()) + .contentType(MediaType.parseMediaType("application/octet-stream")).body(resource); + } + catch (IOException e) { + return (ResponseEntity) ResponseEntity.notFound(); + } + + } + + @RequestMapping(value = "/rest/attachments/delete/{userName:.+}", method = RequestMethod.GET, headers = {USER, PASSWORD}) + public @ResponseBody + ResponseEntity removeAttachments(@PathVariable("userName") String userName) { + + Boolean success = databaseService.removeAttachments(userName); + if (success) { + return ResponseEntity.ok().body(Boolean.TRUE); + } + else { + return ResponseEntity.noContent().build(); + } + } + + + @RequestMapping(value = "/rest/form/submit", method = RequestMethod.POST, headers = {USER, PASSWORD}) + public @ResponseBody + Form submitForm(@RequestBody Form form) { + return form; + } + + @RequestMapping(value = "/rest/form/submit/{id}", method = RequestMethod.PUT) + public @ResponseBody + String submitFormId(@PathVariable("id") String id) { + databaseService.submitForm(id); + return id; + } + + @RequestMapping(value = "/rest/attachment/remove/{id}", method = RequestMethod.GET, headers = {USER, PASSWORD}) + public @ResponseBody + String removeAttachment(@PathVariable("id") int attachmentId) { + return null; + } + + @CrossOrigin(origins = "http://localhost:8080") + @RequestMapping(value = "/rest/form/issubmitted/{id}", method = RequestMethod.GET) + public @ResponseBody + ResponseEntity isFormSubmitted(@PathVariable("id") String id) { + Boolean success = databaseService.isFormSubmitted(id); + if (success) { + return ResponseEntity.ok().body(Boolean.TRUE); + } + else { + return ResponseEntity.ok().body(Boolean.FALSE); + } + } + + @CrossOrigin(origins = "http://localhost:8080") + @RequestMapping(value = "/rest/form/hasremovedattachments/{id}", method = RequestMethod.GET) + public @ResponseBody + ResponseEntity hasRemovedAttachments(@PathVariable("id") String id) { + Boolean hasRemovedAttachments = databaseService.hasRemovedAttachments(id); + if (hasRemovedAttachments) { + return ResponseEntity.ok().body(Boolean.TRUE); + } + else { + return ResponseEntity.ok().body(Boolean.FALSE); + } + } +} diff --git a/integration-module/src/main/java/hycom/MapperController.java b/integration-module/src/main/java/hycom/MapperController.java new file mode 100644 index 0000000..80996f1 --- /dev/null +++ b/integration-module/src/main/java/hycom/MapperController.java @@ -0,0 +1,67 @@ +package hycom; + +import hycom.dao.MapperPublishDao; +import hycom.dao.MapperSubmitDao; +import java.io.IOException; +import javax.xml.parsers.ParserConfigurationException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.xml.sax.SAXException; + +/** + * Kontroler zapewniający API do obsługi przesyłanych formularzy + */ + +@RestController +public class MapperController { + + private final MapperPublishDao mapperPublishDao; + + private final MapperSubmitDao mapperSubmitDao; + + public MapperController(MapperPublishDao mapperPublishDao, MapperSubmitDao mapperSubmitDao) { + this.mapperPublishDao = mapperPublishDao; + this.mapperSubmitDao = mapperSubmitDao; + } + + /** + * Przyjmuje pusty formularz. + * @param appName nazwa Aplikacji formularza + * @param formName nazwa Formy formularza + * @param formXML pusty formularz + * @return Kod odpowiedzi. + * @throws ParserConfigurationException Wyjątek wyrzucany, w przypadku próby parsowania nie odpowiedniego pliku. + * @throws IOException Wyjątek wyrzucany, w przypadku odczytywania z zamkniętego strumienia danych. + * @throws SAXException Wyjątek wyrzucany, w przypadku nieudanego budowania pliku dokumentu. + */ + @RequestMapping(value = "/rest/mapper/publish/{application-name}/{form-name}", method = RequestMethod.PUT) + public @ResponseBody ResponseEntity get(@PathVariable("application-name") String appName, @PathVariable("form-name") String formName, + @RequestBody String formXML ) throws IOException, SAXException, ParserConfigurationException { + mapperPublishDao.parseStringToXML(formXML, appName, formName); + return ResponseEntity.noContent().build(); + } + + /** + * Przyjmuje uzupełniony formularz. + * @param appName nazwa Aplikacji formularza + * @param formName nazwa Formy formularza + * @param formXML pusty formularz + * @param username nazwa Użytkownika wysyłającego formularz + * @return Kod odpowiedzi. + * @throws ParserConfigurationException Wyjątek wyrzucany, w przypadku próby parsowania nie odpowiedniego pliku. + * @throws IOException Wyjątek wyrzucany, w przypadku odczytywania z zamkniętego strumienia danych. + * @throws SAXException Wyjątek wyrzucany, w przypadku nieudanego budowania pliku dokumentu. + */ + @RequestMapping(value = "/rest/mapper/submit/{app}/{form}/{username}", method = RequestMethod.POST) + public ResponseEntity getMapper(@PathVariable("app") String appName, @PathVariable("form") String formName, + @PathVariable("username") String username, @RequestBody String formXML) throws IOException, SAXException, ParserConfigurationException { + mapperSubmitDao.parseXML(formXML, appName, formName, username); + return ResponseEntity.noContent().build(); + } +} \ No newline at end of file diff --git a/integration-module/src/main/java/hycom/WebInitializer.java b/integration-module/src/main/java/hycom/WebInitializer.java new file mode 100644 index 0000000..5710580 --- /dev/null +++ b/integration-module/src/main/java/hycom/WebInitializer.java @@ -0,0 +1,14 @@ +package hycom; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.support.SpringBootServletInitializer; + +/** + * Initializer class for SpringBoot + */ +public class WebInitializer extends SpringBootServletInitializer { + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(Application.class); + } +} diff --git a/integration-module/src/main/java/hycom/dao/BaseDao.java b/integration-module/src/main/java/hycom/dao/BaseDao.java new file mode 100644 index 0000000..9d23e5d --- /dev/null +++ b/integration-module/src/main/java/hycom/dao/BaseDao.java @@ -0,0 +1,27 @@ +package hycom.dao; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.sql.DataSource; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +/** + * Abstract clas for all DAO objects + */ + +@Component +public abstract class BaseDao { + + @Resource + protected DataSource dataSource; + + protected JdbcTemplate jdbcTemplate; + + @PostConstruct + private void init() { + jdbcTemplate = new JdbcTemplate(dataSource); + System.out.println(jdbcTemplate); + } + +} diff --git a/integration-module/src/main/java/hycom/dao/BaseMapperDao.java b/integration-module/src/main/java/hycom/dao/BaseMapperDao.java new file mode 100644 index 0000000..d71fb62 --- /dev/null +++ b/integration-module/src/main/java/hycom/dao/BaseMapperDao.java @@ -0,0 +1,27 @@ +package hycom.dao; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * Klasa obsługująca połączenie z bazą danych Mapper'a. + */ + +@Component +public class BaseMapperDao { + + protected ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:context.xml"); + protected DriverManagerDataSource driverManagerDataSource = (DriverManagerDataSource) applicationContext.getBean("mapperDataSource"); + protected JdbcTemplate jdbcTemplate; + + @PostConstruct + public void init() { + jdbcTemplate = new JdbcTemplate(driverManagerDataSource); + } + +} diff --git a/integration-module/src/main/java/hycom/dao/FormDao.java b/integration-module/src/main/java/hycom/dao/FormDao.java new file mode 100644 index 0000000..a8f716c --- /dev/null +++ b/integration-module/src/main/java/hycom/dao/FormDao.java @@ -0,0 +1,446 @@ +package hycom.dao; + +import hycom.exceptions.DbException; +import hycom.model.Attachment; +import hycom.model.Document; +import hycom.model.Form; +import hycom.model.User; +import hycom.utils.AppUtils; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.util.LinkedList; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.apache.tomcat.util.http.fileupload.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +/** + * DAO for populated forms + */ +@Component +@RequestMapping("/logger") +public class FormDao extends BaseDao { + + private static final Logger logger = LoggerFactory.getLogger(FormDao.class); + + @Value("${orbeon.address}") + private String hostAddress; + + @Value("${form.name.input}") + private String formName; + + @Value("${form.category.select}") + private String formCategory; + + @Value("${form.pillar.select}") + private String formPillar; + + @Value("${form.directory.temp}") + private String tmpDir; + + byte[] buffer = new byte[1024]; + + public List getForms(Integer offset, Integer limit, String fromDate, String toDate, String formNameSearch, + String category, String pillar, String name) throws DbException { + + StringBuilder sqlBuilder = new StringBuilder(); + + sqlBuilder + .append("SELECT ofd.document_id, s.send_date, ofd.form_version, ofd.id, ofd.app, ofd.form, ofda.count, name.val AS name, category.val AS category, pillar.val AS pillar \n" + + "FROM orbeon_form_data ofd\n" + "INNER JOIN submitted_forms s ON ofd.id = s.form_id \n" + + "LEFT JOIN (\n" + "SELECT document_id, COUNT(*) AS count FROM orbeon_form_data_attach \n" + + "GROUP BY document_id) ofda ON ofd.document_id = ofda.document_id\n" + + "LEFT JOIN (SELECT data_id, val FROM orbeon_i_control_text WHERE control LIKE '%" + formName + + "%') name ON ofd.id=name.data_id\n" + + "LEFT JOIN (SELECT data_id, val FROM orbeon_i_control_text WHERE control LIKE '%" + formCategory + + "%') category ON ofd.id=category.data_id\n" + + "LEFT JOIN (SELECT data_id, val FROM orbeon_i_control_text WHERE control LIKE '%" + formPillar + + "%') pillar ON ofd.id=pillar.data_id WHERE (1=1)"); + + if (!StringUtils.isEmpty(fromDate) && !fromDate.equals("*")) { + sqlBuilder.append(" AND s.send_date >= '").append(fromDate).append("'"); + } + if (!StringUtils.isEmpty(toDate) && !toDate.equals("*")) { + sqlBuilder.append(" AND s.send_date <= '").append(toDate).append("'"); + } + if (!StringUtils.isEmpty(formNameSearch) && !formNameSearch.equals("*")) { + sqlBuilder.append(" AND ofd.form LIKE '%").append(formNameSearch).append("%'"); + } + if (!StringUtils.isEmpty(category) && !category.equals("*")) { + sqlBuilder.append(" AND category.val LIKE '%").append(category).append("%'"); + } + if (!StringUtils.isEmpty(name) && !name.equals("*")) { + sqlBuilder.append(" AND name.val LIKE '%").append(name).append("%'"); + } + if (!StringUtils.isEmpty(pillar) && !pillar.equals("*")) { + sqlBuilder.append(" AND pillar.val LIKE '%").append(pillar).append("%'"); + } + + sqlBuilder.append(" ORDER BY send_date DESC"); + + if (offset != null) { + sqlBuilder.append(" OFFSET ").append(offset); + } + if (limit != null) { + sqlBuilder.append(" LIMIT ").append(limit); + } + + List forms = jdbcTemplate.query(sqlBuilder.toString(), (rs, i) -> { + String appName = rs.getString("app"); + String formName = rs.getString("form"); + String formId = rs.getString("document_id"); + Form form = new Form(); + form.setFormName(formName); + form.setLink(AppUtils.generateLink(hostAddress, appName, formName, formId)); + form.setAttachment(rs.getInt("count") > 0); + form.setSendDate(rs.getTimestamp("send_date")); + form.setName(rs.getString("name")); + form.setCategory(rs.getString("category")); + form.setPillar(rs.getString("pillar")); + return form; + }); + + return forms; + } + + public Long getFormsCount(String fromDate, String toDate, String formNameSearch, String category, String pillar, String name) + throws DbException { + + StringBuilder sqlBuilder = new StringBuilder(); + + sqlBuilder.append("SELECT count(ofd.id) \n" + "FROM orbeon_form_data ofd\n" + + "INNER JOIN submitted_forms s ON ofd.id = s.form_id \n" + "LEFT JOIN (\n" + + "SELECT document_id, COUNT(*) AS count FROM orbeon_form_data_attach \n" + + "GROUP BY document_id) ofda ON ofd.document_id = ofda.document_id\n" + + "LEFT JOIN (SELECT data_id, val FROM orbeon_i_control_text WHERE control LIKE '%" + formName + + "%') name ON ofd.id=name.data_id\n" + + "LEFT JOIN (SELECT data_id, val FROM orbeon_i_control_text WHERE control LIKE '%" + formCategory + + "%') category ON ofd.id=category.data_id\n" + + "LEFT JOIN (SELECT data_id, val FROM orbeon_i_control_text WHERE control LIKE '%" + formPillar + + "%') pillar ON ofd.id=pillar.data_id WHERE (1=1)"); + + if (!StringUtils.isEmpty(fromDate) && !fromDate.equals("*")) { + sqlBuilder.append(" AND s.send_date >= '").append(fromDate).append("'"); + } + if (!StringUtils.isEmpty(toDate) && !toDate.equals("*")) { + sqlBuilder.append(" AND s.send_date <= '").append(toDate).append("'"); + } + if (!StringUtils.isEmpty(formNameSearch) && !formNameSearch.equals("*")) { + sqlBuilder.append(" AND ofd.form LIKE '%").append(formNameSearch).append("%'"); + } + if (!StringUtils.isEmpty(category) && !category.equals("*")) { + sqlBuilder.append(" AND category.val LIKE '%").append(category).append("%'"); + } + if (!StringUtils.isEmpty(name) && !name.equals("*")) { + sqlBuilder.append(" AND name.val LIKE '%").append(name).append("%'"); + } + if (!StringUtils.isEmpty(pillar) && !pillar.equals("*")) { + sqlBuilder.append(" AND pillar.val LIKE '%").append(pillar).append("%'"); + } + + + Long count = jdbcTemplate.queryForObject(sqlBuilder.toString(), (rs, i) -> { + + return rs.getLong("count"); + + }); + + return count; + } + + public List getUsersContainsAttachments() throws DbException { + + String sql = "SELECT DISTINCT att.username from orbeon_form_data_attach att \n" + + "INNER JOIN orbeon_form_data ofd ON ofd.document_id = att.document_id \n" + + "INNER JOIN submitted_forms sf ON sf.form_id = ofd.id\n" + "WHERE att.username IS NOT NULL"; + + List users = jdbcTemplate.query(sql, (rs, i) -> { + User user = new User(); + user.setUserName(rs.getString("username")); + user.setMember(true); + return user; + }); + + return users; + } + + public String getAttachments(String userName) throws DbException { + + String sql = "SELECT ofd.document_id, ofd.form_version, ofd.xml, ofd.app, ofd.form from orbeon_form_data ofd\n" + + "INNER JOIN submitted_forms sf ON sf.form_id = ofd.id\n" + + "WHERE EXISTS (SELECT 1 FROM orbeon_form_data_attach att WHERE att.document_id = ofd.document_id)\n" + + "AND ofd.username = '" + userName + "';"; + + List documents = jdbcTemplate.query(sql, (rs, i) -> { + String documentId = rs.getString("document_id"); + String xmlFile = rs.getString("xml"); + String appName = rs.getString("app"); + String formName = rs.getString("form"); + String formVersion = rs.getString("form_version"); + + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = null; + try { + dBuilder = dbFactory.newDocumentBuilder(); + InputStream stream = new ByteArrayInputStream(xmlFile.getBytes(StandardCharsets.UTF_8)); + + org.w3c.dom.Document doc = dBuilder.parse(stream); + doc.getDocumentElement().normalize(); + Element element = doc.getDocumentElement(); + NodeList nodeList = element.getChildNodes(); + + + Document document = new Document(); + document.setDocumentId(documentId); + document.setAppName(appName); + document.setFormName(formName); + document.setVersion(Long.parseLong(formVersion)); + + List attachments = new LinkedList<>(); + + attachments = populateList(nodeList, attachments); + document.setAttachments(attachments); + + return document; + + } + catch (ParserConfigurationException | IOException | SAXException e) { + e.printStackTrace(); + } + + return null; + }); + + if (!CollectionUtils.isEmpty(documents)) { + File directory = new File(tmpDir + "/" + userName); + if (!directory.exists()) { + directory.mkdir(); + } + } + + for (Document document : documents) { + for (Attachment attachment : document.getAttachments()) { + + String sql2 = + "SELECT file_content FROM orbeon_form_data_attach WHERE file_name = '" + attachment.getFileEncodedName() + + "' "; + + jdbcTemplate.query(sql2, (rs, i) -> { + try { + InputStream inputStream = rs.getBinaryStream("file_content"); + OutputStream outputStream = + new FileOutputStream(tmpDir + "/" + userName + "/" + attachment.getFileName()); + + int bytesRead = -1; + byte[] buffer = new byte[1024]; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + + inputStream.close(); + outputStream.close(); + + } + catch (IOException e) { + e.getMessage(); + } + + return null; + }); + + } + + try { + FileOutputStream fos = new FileOutputStream(tmpDir + "/" + userName + ".zip"); + ZipOutputStream zos = new ZipOutputStream(fos); + File folder = new File(tmpDir + "/" + userName); + for (File file : folder.listFiles()) { + ZipEntry ze = new ZipEntry(file.getName()); + zos.putNextEntry(ze); + FileInputStream in = new FileInputStream(file.getPath()); + + int len; + while ((len = in.read(buffer)) > 0) { + zos.write(buffer, 0, len); + } + + in.close(); + zos.closeEntry(); + + + } + zos.close(); + + } + catch (IOException e) { + logger.error("Cannot remove attachments for :" ); + } + + return tmpDir + "/" + userName + ".zip"; + + } + + + return null; + } + + public void removeAttachments(String userName) throws DbException { + File folder = new File(tmpDir + "/" + userName); + File zipFile = new File(tmpDir + "/" + userName + ".zip"); + try { + FileUtils.deleteDirectory(folder); + } + catch (IOException e) { + logger.error("Cannot remove temp directory for user {} : {}", userName, e.getMessage()); + } + zipFile.delete(); + + String deleteAttachmentsSql = + "DELETE FROM orbeon_form_data_attach AS ofda USING orbeon_form_data AS ofd WHERE ofda.document_id = ofd.document_id AND EXISTS (SELECT 1 FROM submitted_forms sf WHERE sf.form_id = ofd.id) AND ofd.username = '" + + userName + "'; "; + + String updateAttachmentsSql = "UPDATE submitted_forms sf SET attachments_moved = TRUE where form_id IN (\n" + + "SELECT sf.form_id FROM submitted_forms sf \n" + "inner JOIN orbeon_form_data ofd ON sf.form_id = ofd.id \n" + + "WHERE ofd.username = '" + userName + "');"; + + try { + int i = jdbcTemplate.update(deleteAttachmentsSql); + int j = jdbcTemplate.update(updateAttachmentsSql); + logger.info("There are {} deleted attachments for user: {}", i, userName); + } + catch (Exception e) { + logger.error("Cannot remove attachments for user {} : {}", userName, e.getMessage()); + } + + + } + + + /** + * Populete list of attachments for xml file node elements + * + * @param nodeList node list from xml file + * + * @param attachments list to populate + * + * @return populated list of attachments + */ + private List populateList(NodeList nodeList, List attachments) { + for (int i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE) { + if (node.hasAttributes() && ((Element) node).hasAttribute("filename")) { + String fileName = ((Element) node).getAttribute("filename"); + String mediaType = ((Element) node).getAttribute("mediatype"); + String fileEncodedName = getFileEncodedName(node.getTextContent()); + System.out.println(((Element) node).getAttribute("size")); + + Attachment attachment = new Attachment(); + attachment.setFileName(fileName); + attachment.setMediaType(mediaType); + attachment.setFileEncodedName(fileEncodedName); + attachments.add(attachment); + } + else { + if (node.getChildNodes().getLength() > 0) { + populateList(node.getChildNodes(), attachments); + } + else { + continue; + } + } + } + else { + continue; + } + + + } + return attachments; + } + + /** + * Returns filename from xml node + * + * @param nodeContent node with file element + * + * @return filename + */ + private String getFileEncodedName(String nodeContent) { + int lastIndex = nodeContent.lastIndexOf("/"); + return nodeContent.substring(lastIndex + 1); + } + + public List getForms() throws DbException { + + return getForms(null, null, null, null, null, null, null, null); + } + + public Form getForm(int formId) throws DbException { + String sql = "SELECT app, form FROM orbeon_form_data WHERE id = " + formId; + return jdbcTemplate.query(sql, rs -> { + if (rs.next()) { + Form form = new Form(); + form.setFormName(rs.getString("app")); + form.setName(rs.getString("form")); + return form; + } + return null; + }); + } + + public void submitForm(String id) throws DbException { + String sql = "INSERT INTO submitted_forms (form_id, send_date) VALUES ((SELECT id FROM orbeon_form_data ofd\n" + + "INNER JOIN (\n" + "SELECT app, form, document_id, MAX(last_modified_time) AS max_last_modified\n" + + "FROM orbeon_form_data o GROUP BY app, form, document_id) forms ON ofd.app = forms.app AND ofd.form = forms.form\n" + + "WHERE ofd.document_id = '" + id + "'\n" + + "AND ofd.last_modified_time = forms.max_last_modified), CURRENT_TIMESTAMP)"; + jdbcTemplate.update(sql); + } + + public void deleteSubmittedForm(String documentId) { + String sql = "DELETE FROM submitted_forms WHERE id IN (SELECT submitted_forms.id FROM submitted_forms INNER JOIN orbeon_form_data ON submitted_forms.form_id = orbeon_form_data.id WHERE document_id ='" + documentId + "')"; + jdbcTemplate.update(sql); + } + + public Boolean hasRemovedAttachments(String documentId) throws DbException { + String sql = "SELECT sf.id FROM submitted_forms sf INNER JOIN orbeon_form_data ofd ON sf.form_id = ofd.id AND sf.attachments_moved = TRUE AND ofd.document_id = '" + documentId + "';"; + return jdbcTemplate.query(sql, rs -> { + if (rs.next()) { + return true; + } + return false; + }); + } + + public boolean isFormSubmitted(String documentId) throws DbException { + String sql = "SELECT sf.id from submitted_forms sf INNER JOIN orbeon_form_data ofd ON sf.form_id = ofd.id WHERE ofd.document_id = '" + documentId + "';"; + return jdbcTemplate.query(sql, rs -> { + if (rs.next()) { + return true; + } + return false; + }); + } + +} diff --git a/integration-module/src/main/java/hycom/dao/MapperPublishDao.java b/integration-module/src/main/java/hycom/dao/MapperPublishDao.java new file mode 100644 index 0000000..8a6d295 --- /dev/null +++ b/integration-module/src/main/java/hycom/dao/MapperPublishDao.java @@ -0,0 +1,116 @@ +package hycom.dao; + +import hycom.service.TableNameParser; +import hycom.service.XMLSerialize; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import javax.xml.parsers.ParserConfigurationException; +import org.springframework.stereotype.Component; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +/** + * Klasa mapująca formularz na XML oraz obsługująca zapytania do bazy danych + */ + +@Component +public class MapperPublishDao extends BaseMapperDao { + + private StringBuilder sqlTableCreate = new StringBuilder(); + + /** + * Parsuje formularz z String na XML. + * @param stringXML pusty formularz przychodzący w formie String + * @param appName nazwa Aplikacji formularza + * @param formName nazwa Formy forumlarza + * @throws ParserConfigurationException Wyjątek wyrzucany, w przypadku próby parsowania nie odpowiedniego pliku. + * @throws IOException Wyjątek wyrzucany, w przypadku odczytywania z zamkniętego strumienia danych. + * @throws SAXException Wyjątek wyrzucany, w przypadku nieudanego budowania pliku dokumentu. + */ + + public void parseStringToXML(String stringXML, String appName, String formName) + throws ParserConfigurationException, IOException, SAXException { + Document document = XMLSerialize.parseStringToXML(stringXML); + sqlTableCreate.setLength(0); + String tableName = TableNameParser.convertTableName(appName, formName); + if (!checkTable(tableName)) { + createTable(tableName); + createColumn(document); + } else { + updateTable(tableName, getXMLColumn(document)); + } + } + + private void createTable(String tableName) { + sqlTableCreate.setLength(0); + sqlTableCreate + .append("CREATE TABLE " + tableName); + } + + private List getXMLColumn(Document document) { + String section = null; + String control = null; + document.getDocumentElement().normalize(); + NodeList nodeList = document.getElementsByTagName("control"); + List elementXML = new ArrayList(); + for (int i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + Element element = (Element) node; + if (element.getAttribute("name").contains("section")) + section = element.getAttribute("name").replace("-","_"); + control = element.getAttribute("name").replace("-","_"); + if (!element.getAttribute("name").contains("section")) + elementXML.add(section + "_" + control); + } + return elementXML; + } + + private void createColumn(Document document) { + List columnXML = getXMLColumn(document); + sqlTableCreate.append("\n( \n"); + sqlTableCreate.append("ID BIGSERIAL PRIMARY KEY, \n"); + sqlTableCreate.append("SEND_DATA TIMESTAMP NOT NULL, \n"); + sqlTableCreate.append("LOGIN TEXT NOT NULL, \n"); + Iterator iterator = columnXML.iterator(); + while (iterator.hasNext()) { + sqlTableCreate.append(" " + iterator.next() + " TEXT, \n"); + } + sqlTableCreate.deleteCharAt(sqlTableCreate.length() - 3); + sqlTableCreate.append(")\n"); + jdbcTemplate.update(sqlTableCreate.toString()); + } + + private boolean checkTable(String tableName) { + + StringBuilder sqlCheckTable = new StringBuilder(); + sqlCheckTable + .append("SELECT COUNT(*) FROM information_schema.tables " + + "WHERE table_schema='public' AND table_name = '" + tableName + "'"); + int exist = jdbcTemplate.queryForObject(sqlCheckTable.toString(), Integer.class); + if (exist > 0) + return true; + else + return false; + } + + private void updateTable(String tableName, List xmlColumn) { + List columnList = jdbcTemplate.queryForList( + ("SELECT column_name FROM information_schema.columns where table_name = '" + tableName + "'"),String.class); + xmlColumn.removeAll(columnList); + if (!xmlColumn.isEmpty()) { + StringBuilder sqlAddColumns = new StringBuilder(); + sqlAddColumns.append("ALTER TABLE " + tableName + "\n"); + Iterator iterator = xmlColumn.iterator(); + while (iterator.hasNext()) { + sqlAddColumns.append("ADD COLUMN " + iterator.next() + " TEXT, \n"); + } + sqlAddColumns.deleteCharAt(sqlAddColumns.length() - 3).append(";"); + jdbcTemplate.update(sqlAddColumns.toString()); + } + } +} \ No newline at end of file diff --git a/integration-module/src/main/java/hycom/dao/MapperSubmitDao.java b/integration-module/src/main/java/hycom/dao/MapperSubmitDao.java new file mode 100644 index 0000000..67f5243 --- /dev/null +++ b/integration-module/src/main/java/hycom/dao/MapperSubmitDao.java @@ -0,0 +1,218 @@ +package hycom.dao; + +import hycom.service.TableNameParser; +import hycom.service.XMLSerialize; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import javax.xml.parsers.ParserConfigurationException; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +/** + * Klasa mapująca dane na XML oraz obsługująca zapytania do bazy danych + */ + +@Component +public class MapperSubmitDao extends BaseMapperDao { + + /** + * Parsuje uzupełniony formularz na XML. + * @param formXML uzupełniony formularz przychodzący w formie String + * @param appName nazwa Aplikacji formularza + * @param formName nazwa Formy formularza + * @param userLogin login użytkownika wysyłającego formularz + * @throws ParserConfigurationException Wyjątek wyrzucany, w przypadku próby parsowania nie odpowiedniego pliku. + * @throws IOException Wyjątek wyrzucany, w przypadku odczytywania z zamkniętego strumienia danych. + * @throws SAXException Wyjątek wyrzucany, w przypadku nieudanego budowania pliku dokumentu. + */ + + public void parseXML(String formXML, String appName, String formName, String userLogin) + throws ParserConfigurationException, IOException, SAXException { + StringBuilder stringBuilder = new StringBuilder(); + new BufferedReader(new StringReader(formXML)).lines().forEach( + (line) -> { + if (StringUtils.isNotBlank(line)) + stringBuilder.append(line); + }); + Document document = XMLSerialize.parseStringToXML(stringBuilder.toString()); + String tableName = TableNameParser.convertTableName(appName, formName); + if (checkTable(tableName)) + getValueFromXML(document, tableName, userLogin); + } + + private void getValueFromXML(Document document, String tablePrefix, String login) { + String section = null; + String control = null; + String grid = null; + String controlGrid = null; + document.getDocumentElement().normalize(); + NodeList nodeList = document.getDocumentElement().getChildNodes(); + List controlData = new ArrayList<>(); + List controlColumns = new ArrayList<>(); + List gridData = new ArrayList<>(); + List gridColumns = new ArrayList<>(); + List gridTable = new ArrayList<>(); + for (int i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + NodeList sectionNodeList = node.getChildNodes(); + if (node.getNodeName().contains("section")) { + section = node.getNodeName().replace("-","_"); + for (int j = 0; j < sectionNodeList.getLength(); j++) { + Node sectionNode = sectionNodeList.item(j); + if (sectionNode.getNodeName().contains("control")) { + control = sectionNode.getNodeName().replace("-","_"); + controlColumns.add(section + "_" + control); + controlData.add(sectionNode.getTextContent()); + updateColumns(tablePrefix, section + "_" + control); + } else if (sectionNode.getNodeName().contains("grid")) { + grid = sectionNode.getNodeName().replace("-","_"); + if (sectionNode.getChildNodes().getLength() > 0) + for (int k = 0; k < sectionNode.getChildNodes().getLength(); k++) { + controlGrid = sectionNode.getChildNodes().item(k).getNodeName() + .replace("-", "_"); + if (!controlGrid.contains("#text")) + gridColumns.add(controlGrid); + if (!controlGrid.contains("#text")) + gridData.add(sectionNode.getChildNodes().item(k).getTextContent()); + if (!controlGrid.contains("#text")) + gridTable.add(tablePrefix + "_" + section + "_" + grid); + if (!checkTable(tablePrefix + "_" + section + "_" + grid)) + createGridTableAndColumns(tablePrefix + "_" + section + "_" + + grid, controlGrid, tablePrefix); + else + updateGridColumns(tablePrefix + "_" + section + "_" + grid, controlGrid); + } + } + } + } + } + if (!controlData.isEmpty()) { + insertControlDataToDatabase(tablePrefix, controlColumns, controlData, login); + if (!gridData.isEmpty()) + insertGridData(gridTable, gridData, gridColumns, tablePrefix); + } + } + + private void insertGridData(List tablePrefix, List textContent, + List controlGrid, String originalTable) { + StringBuilder sqlInsertGrid = new StringBuilder(); + List addedData = new ArrayList<>(); + String checkTable = tablePrefix.get(0); + Boolean flag = false; + if (tablePrefix.size() == textContent.size() + && tablePrefix.size() == controlGrid.size()) { + for (int i = 0; i < tablePrefix.size(); i++) { + sqlInsertGrid.setLength(0); + if (!checkTable.equals(tablePrefix.get(i))) { + checkTable = tablePrefix.get(i); + flag = !flag; + } + if (flag.equals(false) || addedData.contains(controlGrid.get(i))) { + sqlInsertGrid.append("INSERT INTO " + checkTable + " (" + " id_" + originalTable + ", " + controlGrid.get(i) + + " ) \n" + "VALUES (" + " (SELECT id from " + originalTable + " order by id desc limit 1 ), '" + + textContent.get(i) + "' );"); + flag = true; + addedData.add(controlGrid.get(i)); + } else { + sqlInsertGrid + .append("UPDATE " + checkTable + " \n" + "SET " + controlGrid.get(i) + " = '" + textContent.get(i) + + "' \n WHERE id = " + "(SELECT id from " + checkTable + " ORDER BY id desc limit 1);"); + } + jdbcTemplate.update(sqlInsertGrid.toString()); + } + } + } + + private void updateColumns(String tableName, String columnName) { + if (checkColumn(tableName, columnName)) + jdbcTemplate.update("ALTER TABLE " + tableName + "\n" + "ADD COLUMN " + columnName + " TEXT;"); + + } + + private void updateGridColumns(String tableName, String columnName) { + String column = null; + if (columnName.contains("control")) + column = columnName; + if (column !=null) + if (checkColumn(tableName, columnName)) + jdbcTemplate.update("ALTER TABLE " + tableName + "\n" + "ADD COLUMN " + column + " TEXT;"); + } + + private void createGridTableAndColumns(String tableName, String columnName, String originalTable) { + String column = null; + if (columnName.contains("control")) + column = columnName; + if (column !=null) + jdbcTemplate.update("CREATE TABLE " + tableName + "\n ( id BIGSERIAL, " + "id_" + originalTable + + " INTEGER REFERENCES " + originalTable + "(id), \n" + column + " TEXT, \n" + "PRIMARY KEY (id, id_" + + originalTable + ") );"); + } + + private void insertControlDataToDatabase(String tablePrefix, List controlColumns, + List controlData, String login) { + Date date = new Date(); + StringBuilder sqlInsert = new StringBuilder(); + sqlInsert.setLength(0); + sqlInsert + .append("INSERT INTO " + tablePrefix + " ("); + sqlInsert + .append("SEND_DATA, LOGIN,"); + + Iterator iteratorColumns = controlColumns.iterator(); + while (iteratorColumns.hasNext() && controlColumns.size() == controlData.size()) { + sqlInsert + .append(" " + iteratorColumns.next() + ","); + } + + sqlInsert + .deleteCharAt(sqlInsert.length() - 1); + sqlInsert + .append(" ) \n VALUES ( '" + date + "' , '" + login + "',"); + + for (int i = 0; i < controlData.size(); i++) { + if (controlData.get(i).contains("'")) + sqlInsert + .append(" '" + controlData.get(i).replace("'", "") + "',"); + else + sqlInsert + .append(" '" + controlData.get(i) + "',"); + } + sqlInsert + .deleteCharAt(sqlInsert.length() - 1); + sqlInsert + .append(" );"); + jdbcTemplate.update(sqlInsert.toString()); + + } + + private boolean checkTable(String tableName) { + String sqlCheckTable = + ("SELECT COUNT(*) FROM information_schema.tables " + "WHERE table_schema='public' AND table_name = '" + + tableName + "'"); + int exist = jdbcTemplate.queryForObject(sqlCheckTable, Integer.class); + if (exist > 0) + return true; + else + return false; + } + + private boolean checkColumn(String tableName, String columnName) { + String sqlCheckColumns = + ("SELECT COUNT(*) FROM information_schema.columns " + "WHERE table_name='" + tableName + + "' AND column_name = '" + columnName + "'"); + int exist = jdbcTemplate.queryForObject(sqlCheckColumns, Integer.class); + if (exist > 0) + return false; + else + return true; + } +} diff --git a/integration-module/src/main/java/hycom/exceptions/DbException.java b/integration-module/src/main/java/hycom/exceptions/DbException.java new file mode 100644 index 0000000..c6c18ee --- /dev/null +++ b/integration-module/src/main/java/hycom/exceptions/DbException.java @@ -0,0 +1,10 @@ +package hycom.exceptions; + +/** + * + */ +public class DbException extends Exception { + public DbException(String s, Throwable throwable) { + super(s, throwable); + } +} diff --git a/integration-module/src/main/java/hycom/model/Attachment.java b/integration-module/src/main/java/hycom/model/Attachment.java new file mode 100644 index 0000000..5194db2 --- /dev/null +++ b/integration-module/src/main/java/hycom/model/Attachment.java @@ -0,0 +1,68 @@ +package hycom.model; + +import java.io.Serializable; + +public class Attachment implements Serializable{ + + private static final long serialVersionUID = -7788619177798333713L; + + private int id; + private String userName; + private Object encodedFile; + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getMediaType() { + return mediaType; + } + + public void setMediaType(String mediaType) { + this.mediaType = mediaType; + } + + public String getFileEncodedName() { + return fileEncodedName; + } + + public void setFileEncodedName(String fileEncodedName) { + this.fileEncodedName = fileEncodedName; + } + + private String fileName; + private String mediaType; + private String fileEncodedName; + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public Object getEncodedFile() { + return encodedFile; + } + + public void setEncodedFile(Object encodedFile) { + this.encodedFile = encodedFile; + } + + + +} diff --git a/integration-module/src/main/java/hycom/model/Document.java b/integration-module/src/main/java/hycom/model/Document.java new file mode 100644 index 0000000..5132e8f --- /dev/null +++ b/integration-module/src/main/java/hycom/model/Document.java @@ -0,0 +1,59 @@ +package hycom.model; + +import java.io.Serializable; +import java.util.List; + +public class Document implements Serializable{ + + private static final long serialVersionUID = -7788619177798333715L; + + private String documentId; + private String appName; + private String formName; + + public List getAttachments() { + return attachments; + } + + public void setAttachments(List attachments) { + this.attachments = attachments; + } + + private List attachments; + + public long getVersion() { + return version; + } + + public void setVersion(long version) { + this.version = version; + } + + private long version; + + public String getDocumentId() { + return documentId; + } + + public void setDocumentId(String documentId) { + this.documentId = documentId; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getFormName() { + return formName; + } + + public void setFormName(String formName) { + this.formName = formName; + } + + +} diff --git a/integration-module/src/main/java/hycom/model/Form.java b/integration-module/src/main/java/hycom/model/Form.java new file mode 100644 index 0000000..1c9ceaf --- /dev/null +++ b/integration-module/src/main/java/hycom/model/Form.java @@ -0,0 +1,80 @@ +package hycom.model; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.DateSerializer; +import java.io.Serializable; +import java.util.Date; + +/** + * Form model + */ +public class Form implements Serializable{ + + private static final long serialVersionUID = -7788619177798333712L; + + private String formName; + private String link; + private Date sendDate; + private boolean attachment; + private String category; + private String name; + private String pillar; + + public String getFormName() { + return formName; + } + + public void setFormName(String formName) { + this.formName = formName; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public boolean getAttachment() { + return attachment; + } + + public void setAttachment(boolean attachment) { + this.attachment = attachment; + } + + @JsonSerialize(using=DateSerializer.class) + public Date getSendDate() { + return sendDate; + } + public void setSendDate(Date sendDate) { + this.sendDate = sendDate; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPillar() { + return pillar; + } + + public void setPillar(String pillar) { + this.pillar = pillar; + } + + +} diff --git a/integration-module/src/main/java/hycom/model/FormsResoult.java b/integration-module/src/main/java/hycom/model/FormsResoult.java new file mode 100644 index 0000000..20d21ce --- /dev/null +++ b/integration-module/src/main/java/hycom/model/FormsResoult.java @@ -0,0 +1,32 @@ +package hycom.model; + +import java.io.Serializable; +import java.util.List; + +/** + * Forms response + */ +public class FormsResoult implements Serializable{ + + private static final long serialVersionUID = -7788619177798333715L; + + public List getForms() { + return forms; + } + + public void setForms(List forms) { + this.forms = forms; + } + + public Long getCount() { + return count; + } + + public void setCount(Long count) { + this.count = count; + } + + private List forms; + private Long count; + +} diff --git a/integration-module/src/main/java/hycom/model/User.java b/integration-module/src/main/java/hycom/model/User.java new file mode 100644 index 0000000..b376f02 --- /dev/null +++ b/integration-module/src/main/java/hycom/model/User.java @@ -0,0 +1,33 @@ +package hycom.model; + +import java.io.Serializable; + +/** + * User from Orbeon + */ +public class User implements Serializable{ + + private static final long serialVersionUID = -7788619177798333714L; + + private String userName; + private boolean isMember; + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public boolean isMember() { + return isMember; + } + + public void setMember(boolean isMember) { + this.isMember = isMember; + } + + + +} diff --git a/integration-module/src/main/java/hycom/model/UsersResoult.java b/integration-module/src/main/java/hycom/model/UsersResoult.java new file mode 100644 index 0000000..7399107 --- /dev/null +++ b/integration-module/src/main/java/hycom/model/UsersResoult.java @@ -0,0 +1,32 @@ +package hycom.model; + +import java.io.Serializable; +import java.util.List; + +/** + * Forms response + */ +public class UsersResoult implements Serializable{ + + private static final long serialVersionUID = -7788619177798333716L; + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } + + public Long getCount() { + return count; + } + + public void setCount(Long count) { + this.count = count; + } + + private List users; + private Long count; + +} diff --git a/integration-module/src/main/java/hycom/service/DatabaseService.java b/integration-module/src/main/java/hycom/service/DatabaseService.java new file mode 100644 index 0000000..fe8ccf9 --- /dev/null +++ b/integration-module/src/main/java/hycom/service/DatabaseService.java @@ -0,0 +1,133 @@ +package hycom.service; + +import hycom.dao.FormDao; +import hycom.exceptions.DbException; +import hycom.model.Form; +import hycom.model.User; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * Database service + */ +@Service +@Transactional +@RequestMapping("/logger") +public class DatabaseService { + + private static final Logger logger = LoggerFactory.getLogger(DatabaseService.class); + + @Autowired + private FormDao formDao; + + public List getForms() { + try { + return formDao.getForms(); + } + catch (DbException e) { + logger.error("Error in method getForms(): " + e.getMessage()); + } + return null; + } + + public List getFormsUsingPagination(int offset, int limit, String fromDate, String toDate, String formNameSearch, + String category, String pillar, String name) { + try { + return formDao.getForms(offset, limit, fromDate, toDate, formNameSearch, category, pillar, name); + } + catch (DbException e) { + logger.error("Error in method getFormsUsingPagination(...): " + e.getMessage()); + } + return null; + } + + public Long getFormsCount(String fromDate, String toDate, String formNameSearch, + String category, String pillar, String name) { + try { + return formDao.getFormsCount(fromDate, toDate, formNameSearch, category, pillar, name); + } + catch (DbException e) { + logger.error("Error in getFormsCount(...): " + e.getMessage()); + } + return null; + } + + public List getUsersContainsAttachments() { + try { + return formDao.getUsersContainsAttachments(); + } + catch (DbException e) { + logger.error("Error in getUsersContainsAttachments(): " + e.getMessage()); + } + return null; + } + public String getAttachments(String userName) { + try { + return formDao.getAttachments(userName); + } + catch (DbException e) { + logger.error("Error in getAttachments(...): " + e.getMessage()); + } + return null; + } + + public Boolean removeAttachments(String userName) { + try { + formDao.removeAttachments(userName); + return true; + } + catch (DbException e) { + logger.error("Error in removeAttachments(...): " + e.getMessage()); + } + return false; + } + + public Form getForm(int formId) { + try { + return formDao.getForm(formId); + } + catch (DbException e) { + logger.error("Error in getForm(...): " + e.getMessage()); + } + return null; + } + + public void submitForm(String id) { + try { + boolean submitted = formDao.isFormSubmitted(id); + if (submitted) + formDao.deleteSubmittedForm(id); + formDao.submitForm(id); + } + catch (DbException e) { + logger.error("Error in submitForm(...): " + e.getMessage()); + } + } + + public Boolean hasRemovedAttachments(String id) { + try { + return formDao.hasRemovedAttachments(id); + } + catch (DbException e) { + logger.error("Error in hasRemovedAttachments(...): " + e.getMessage()); + return null; + } + } + + public Boolean isFormSubmitted(String id) { + try { + return formDao.isFormSubmitted(id); + } + catch (DbException e) { + logger.error("isFormSubmitted(...): " + e.getMessage()); + return null; + } + } + + +} diff --git a/integration-module/src/main/java/hycom/service/TableNameParser.java b/integration-module/src/main/java/hycom/service/TableNameParser.java new file mode 100644 index 0000000..938dc52 --- /dev/null +++ b/integration-module/src/main/java/hycom/service/TableNameParser.java @@ -0,0 +1,74 @@ +package hycom.service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +/** + * Serwis do parsowania nazwy tabeli. + */ + +@Service +public class TableNameParser { + + private static int maxColumnName = 30; + + private static String tablePrefix = "ORBEON_F_"; + + /** + * Konwerter nazwy tabeli. + * @param appName nazwa Aplikacji formularza + * @param formName nazwa Formy formularza + * @return skrócona nazwa tabeli + */ + public static String convertTableName(String appName, String formName) { + String appXML = xmlToSQLId(appName); + String formXML = xmlToSQLId(formName); + String viewName = tablePrefix + joinParts(Arrays.asList(appXML,formXML), maxColumnName - tablePrefix.length()); + + return viewName.toLowerCase(); + } + + private static String joinParts(List parts, int max) { + return String.join("_", fitParts(parts, max)); + } + + private static String xmlToSQLId(String id){ + String result = id.replaceAll("-", "_") + .toUpperCase() // to uppercase + .replaceAll("[^A-Z0-9_]", ""); + result = StringUtils.stripStart(result, "_"); + result = StringUtils.stripEnd(result, "_"); + return result; + } + + private static List fitParts(List parts, int max){ + int usable = max - parts.size() + 1; + return shaveParts(parts, usable); + } + + private static List shaveParts(List parts, int usable){ + List partsLength = parts.stream().map(String::length).collect(Collectors.toList()); + int totalLength = parts.stream().mapToInt(String::length).sum(); + + if(totalLength <= usable) { + return parts; + } else { + Integer maxPartLength = partsLength.stream().max(Comparator.naturalOrder()).orElseThrow(RuntimeException::new); + int maxPartIndex = partsLength.indexOf(maxPartLength); + String newPart = StringUtils.stripEnd(removeLastChar(parts.get(maxPartIndex)), "_"); + List newParts = new ArrayList<>(parts); + newParts.set(maxPartIndex, newPart); + + return shaveParts(newParts, usable); + } + } + + private static String removeLastChar(String str) { + return str.substring(0, str.length() - 1); + } +} diff --git a/integration-module/src/main/java/hycom/service/XMLSerialize.java b/integration-module/src/main/java/hycom/service/XMLSerialize.java new file mode 100644 index 0000000..eee01a1 --- /dev/null +++ b/integration-module/src/main/java/hycom/service/XMLSerialize.java @@ -0,0 +1,47 @@ +package hycom.service; + +import com.sun.org.apache.xml.internal.serialize.OutputFormat; + +import com.sun.org.apache.xml.internal.serialize.XMLSerializer; +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.springframework.stereotype.Service; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +/** + * Serwis do parsowania formularza (String -> XML) + */ + +@Service +public class XMLSerialize { + + /** + * Konwerter XML + * @param stringXML Formularz aplikacji + * @return dokument XML + * @throws ParserConfigurationException Wyjątek wyrzucany, w przypadku próby parsowania nie odpowiedniego pliku. + * @throws IOException Wyjątek wyrzucany, w przypadku odczytywania z zamkniętego strumienia danych. + * @throws SAXException Wyjątek wyrzucany, w przypadku nieudanego budowania pliku dokumentu. + */ + + public static Document parseStringToXML(String stringXML) throws ParserConfigurationException, IOException, SAXException { + Document document; + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + InputSource inputSource = new InputSource(new StringReader(stringXML)); + document = documentBuilder.parse(inputSource); + StringWriter out = new StringWriter(); + OutputFormat format = new OutputFormat(document); + format.setIndenting(true); + XMLSerializer serializer = new XMLSerializer(out, format); + serializer.serialize(document); + + return document; + } +} diff --git a/integration-module/src/main/java/hycom/utils/AppUtils.java b/integration-module/src/main/java/hycom/utils/AppUtils.java new file mode 100644 index 0000000..4d11517 --- /dev/null +++ b/integration-module/src/main/java/hycom/utils/AppUtils.java @@ -0,0 +1,33 @@ +package hycom.utils; + +import java.net.URL; +import javax.xml.parsers.DocumentBuilderFactory; +import org.w3c.dom.Document; + +/** + * Narzędzia wykorzystywane w aplikacji + */ +public class AppUtils { + + public static String generateLink(String hostAddress, String appName, String formName, String formId) { + StringBuilder linkBuilder = new StringBuilder(); + linkBuilder.append(hostAddress); + if (!hostAddress.endsWith("/")) { + linkBuilder.append("/"); + } + linkBuilder.append("fr/"); + linkBuilder.append(appName.concat("/")); + linkBuilder.append(formName.concat("/")); + linkBuilder.append("view/"); + linkBuilder.append(formId); + + return linkBuilder.toString(); + } + + public static Document loadDocumentUrl(String url) throws Exception { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + return factory.newDocumentBuilder().parse(new URL(url).openStream()); + } + +} diff --git a/integration-module/src/main/resources/application.properties b/integration-module/src/main/resources/application.properties new file mode 100644 index 0000000..9644317 --- /dev/null +++ b/integration-module/src/main/resources/application.properties @@ -0,0 +1,14 @@ +#spring.datasource.url= jdbc:postgresql://localhost:5432/orbeon +#spring.datasource.username=postgres +#spring.datasource.password=postgres + +logging.level.org.springframework.web=WARN +logging.level.org.hibernate=ERROR +logging.file=/opt/icoca/integration.log + +spring.jpa.hibernate.ddl-auto=validate +#orbeon.address=http://localhost:8080/orbeonpe/ +form.name.input=form-name-input +form.category.select=form-category-select +form.pillar.select=form-pillar-select +form.directory.temp = /opt/orbeon/temp diff --git a/integration-module/src/main/resources/context.xml b/integration-module/src/main/resources/context.xml new file mode 100644 index 0000000..0142181 --- /dev/null +++ b/integration-module/src/main/resources/context.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integration-module/src/main/resources/sql/create.sql b/integration-module/src/main/resources/sql/create.sql new file mode 100644 index 0000000..a18cb18 --- /dev/null +++ b/integration-module/src/main/resources/sql/create.sql @@ -0,0 +1,7 @@ +CREATE TABLE submitted_forms +( + id serial NOT NULL, + form_id NUMERIC NOT NULL, + send_date timestamp without time zone NOT NULL, + attachments_moved boolean NOT NULL DEFAULT FALSE +); \ No newline at end of file diff --git a/integration-module/src/test/java/hycom/FormsControllerTests.java b/integration-module/src/test/java/hycom/FormsControllerTests.java new file mode 100644 index 0000000..de44c05 --- /dev/null +++ b/integration-module/src/test/java/hycom/FormsControllerTests.java @@ -0,0 +1,55 @@ +/* + * Copyright 2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hycom; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +// import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; + + +@RunWith(SpringRunner.class) +@SpringBootTest +@AutoConfigureMockMvc +public class FormsControllerTests { + + @Autowired + private MockMvc mockMvc; + + @Test + public void noTest() { + System.out.println("test"); + } + + @Test + public void getFormsTest() { + try { + this.mockMvc.perform(get("/rest/forms")).andDo(print()).andExpect(status().isOk()); + // .andExpect(jsonPath("$.formName").value("orbeon")); + } + catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/integration-module/web/WEB-INF/web.xml b/integration-module/web/WEB-INF/web.xml new file mode 100644 index 0000000..a0b58fd --- /dev/null +++ b/integration-module/web/WEB-INF/web.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/registration/pom.xml b/registration/pom.xml new file mode 100644 index 0000000..b7c773f --- /dev/null +++ b/registration/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + eu.mooseinc + registration-parent + pom + 1.3.0 + + registration-form + registration-doc + + + + UTF-8 + 4.3.5.RELEASE + 3.0.3.RELEASE + 2.8.6 + 1.7.22 + 1.4.7 + 3.0 + 1.3.2 + 2.5 + 21.0 + 5.2.6.Final + 5.3.4.Final + 9.4.1212.jre7 + 9.0.0.M15 + 3.7 + 1.14 + 3.0.0 + 2.2.6 + 4.5.3 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.0 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M4 + + -Xmx512m -XX:MaxPermSize=256m + + + + + \ No newline at end of file diff --git a/registration/registration-doc/pom.xml b/registration/registration-doc/pom.xml new file mode 100644 index 0000000..cf0bfd8 --- /dev/null +++ b/registration/registration-doc/pom.xml @@ -0,0 +1,19 @@ + + + + + + registration-parent + eu.mooseinc + 1.3.0 + + 4.0.0 + pom + + registration-doc + \ No newline at end of file diff --git a/registration/registration-doc/src/sql/create.sql b/registration/registration-doc/src/sql/create.sql new file mode 100644 index 0000000..99aa8ce --- /dev/null +++ b/registration/registration-doc/src/sql/create.sql @@ -0,0 +1,9 @@ +CREATE TABLE registration_membership +( + id bigint NOT NULL, + version bigint NOT NULL, + membership_type character varying(60) NOT NULL, + CONSTRAINT registration_membership_pkey PRIMARY KEY (id) +); + +CREATE SEQUENCE registrationform_sequence START 100 INCREMENT 1; \ No newline at end of file diff --git a/registration/registration-doc/src/sql/prod-data.sql b/registration/registration-doc/src/sql/prod-data.sql new file mode 100644 index 0000000..4b3b3bc --- /dev/null +++ b/registration/registration-doc/src/sql/prod-data.sql @@ -0,0 +1,5 @@ +INSERT INTO registration_membership(id, version, membership_type) VALUES (1, 0, 'Membership in the Private Security Pillar'); +INSERT INTO registration_membership(id, version, membership_type) VALUES (2, 0, 'Membership in the Civil Society Pillar'); +INSERT INTO registration_membership(id, version, membership_type) VALUES (3, 0, 'Membership in the Government Pillar'); +INSERT INTO registration_membership(id, version, membership_type) VALUES (4, 0, 'Observer status'); +INSERT INTO registration_membership(id, version, membership_type) VALUES (5, 0, 'Affiliate status'); diff --git a/registration/registration-form/pom.xml b/registration/registration-form/pom.xml new file mode 100644 index 0000000..b5e38b8 --- /dev/null +++ b/registration/registration-form/pom.xml @@ -0,0 +1,189 @@ + + + + registration-parent + eu.mooseinc + 1.3.0 + + 4.0.0 + war + + registration-form + + + + + org.springframework + spring-context-support + ${spring.version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-webmvc + ${spring.version} + + + org.springframework + spring-orm + ${spring.version} + + + + + org.thymeleaf + thymeleaf + ${thymeleaf.version} + compile + + + org.thymeleaf + thymeleaf-spring4 + ${thymeleaf.version} + compile + + + javax + javaee-web-api + 7.0 + provided + + + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + + + org.postgresql + postgresql + ${postrgesql.version} + + + + + org.hibernate + hibernate-core + ${hibernate.version} + + + org.hibernate + hibernate-validator + ${hibernate.validator.version} + + + org.apache.tomcat + tomcat-jdbc + ${apache.tomcat.version} + runtime + + + + + javax.mail + mail + ${java.mail.version} + + + + + commons-fileupload + commons-fileupload + ${commons-fileupload.version} + + + commons-io + commons-io + ${commons-io.version} + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + + com.google.guava + guava + ${guava.version} + + + org.apache.commons + commons-lang3 + ${apache.commons.version} + + + org.apache.tika + tika-core + ${apache.tika.version} + + + org.apache.poi + poi + ${apache.poi.version} + + + + + javax.el + javax.el-api + ${java.el.version} + + + org.glassfish.web + javax.el + ${glassfish.web.version} + + + + org.apache.httpcomponents + fluent-hc + ${apache.httpcomponents.version} + + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + ${project.build.outputDirectory}/embedded/tomcat-context.xml + + + + org.apache.maven.plugins + maven-war-plugin + 3.0.0 + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/MembershipTypeDao.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/MembershipTypeDao.java new file mode 100644 index 0000000..4fe14d0 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/MembershipTypeDao.java @@ -0,0 +1,23 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.dao; + +import eu.mooseinc.dell.form.dao.base.Dao; +import eu.mooseinc.dell.form.entity.MembershipType; +import java.util.List; + +/** + * DAO interface for entity {@link MembershipType} + */ +public interface MembershipTypeDao extends Dao { + /** + * Returns list of membership types. + * + * @return list of membership types. + */ + List getMembershipTypes(); +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/base/Dao.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/base/Dao.java new file mode 100644 index 0000000..37fa176 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/base/Dao.java @@ -0,0 +1,67 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.dao.base; + +import eu.mooseinc.dell.form.exception.ObjectNotFoundException; +import java.util.List; + +/** + * Base dao + */ +public interface Dao { + /** + * Store object in database and get its identifier. + * + * @param t object to store. + * + * @return stored object. + */ + T persist(T t); + + /** + * Delete object from database with provided id. + * + * @param id object id. + * + * @throws ObjectNotFoundException object not found in database. + */ + void delete(long id) throws ObjectNotFoundException; + + /** + * Delete object from database. + * + * @param t object to delete. + */ + void remove(T t); + + /** + * Returns object with provided id. If there is no such object, it terurns {@code null}. + * + * @param id object id. + * + * @return object with provided id. + */ + T find(long id); + + /** + * Returns object from database. + * + * @param id object id. + * + * @return object with provided id. + * + * @throws ObjectNotFoundException object not found in database. + */ + T get(long id) throws ObjectNotFoundException; + + /** + * List of all objects in database + * + * @return list of objects. + */ + List getAll(); +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/MembershipTypeDaoImpl.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/MembershipTypeDaoImpl.java new file mode 100644 index 0000000..a317618 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/MembershipTypeDaoImpl.java @@ -0,0 +1,35 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.dao.impl; + +import eu.mooseinc.dell.form.dao.MembershipTypeDao; +import eu.mooseinc.dell.form.dao.impl.base.AbstractDao; +import eu.mooseinc.dell.form.entity.MembershipType; +import eu.mooseinc.dell.form.entity.query.MembershipTypeQueries.GetMembershipTypesQuery; +import eu.mooseinc.dell.form.type.Entity; +import java.util.List; +import org.hibernate.query.Query; +import org.springframework.stereotype.Repository; + +/** + * DAO implementation for entity {@link MembershipType} + */ +@Repository +public class MembershipTypeDaoImpl extends AbstractDao implements MembershipTypeDao { + /** + * Constructor. + */ + public MembershipTypeDaoImpl() { + super(Entity.MEMBERSHIP_TYPE); + } + + @Override + public List getMembershipTypes() { + final Query query = createNamedQuery(GetMembershipTypesQuery.NAME); + return query.getResultList(); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/base/AbstractDao.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/base/AbstractDao.java new file mode 100644 index 0000000..7734b23 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/dao/impl/base/AbstractDao.java @@ -0,0 +1,114 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.dao.impl.base; + +import eu.mooseinc.dell.form.dao.base.Dao; +import eu.mooseinc.dell.form.entity.base.BaseEntity; +import eu.mooseinc.dell.form.exception.ObjectNotFoundException; +import eu.mooseinc.dell.form.type.Entity; +import java.lang.reflect.ParameterizedType; +import java.text.MessageFormat; +import java.util.List; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.query.Query; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Bazowa implementacja dla {@link Dao}. + * + * @param typ encji. + */ +public abstract class AbstractDao implements Dao { + + @Autowired + protected SessionFactory sessionFactory; + + /** + * Klasa obiektu obsługiwanego przez DAO. + */ + private final Class clazz; + + /** + * Typ encji. + */ + private final Entity entity; + + /** + * Konstruktor. + * + * @param entity typ encji. + */ + public AbstractDao(final Entity entity) { + this.clazz = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + this.entity = entity; + } + + @Override + public T persist(final T t) { + sessionFactory.getCurrentSession().persist(t); + return t; + } + + @Override + public void delete(final long id) throws ObjectNotFoundException { + sessionFactory.getCurrentSession().delete(get(id)); + } + + @Override + public void remove(final T t) { + sessionFactory.getCurrentSession().delete(t); + } + + @Override + public T find(final long id) { + return sessionFactory.getCurrentSession().get(clazz, id); + } + + @Override + public T get(final long id) throws ObjectNotFoundException { + final T t = find(id); + if (t == null) + throw new ObjectNotFoundException( + MessageFormat.format("Nie odnaleziono obiektu {0} o identyfikatorze {1}", entity.getName(), id)); + return t; + } + + @Override + public List getAll() { + final Session session = sessionFactory.getCurrentSession(); + final CriteriaBuilder builder = session.getCriteriaBuilder(); + final CriteriaQuery criteriaQuery = builder.createQuery(clazz); + final Root from = criteriaQuery.from(clazz); + criteriaQuery.select(from); + final Query query = session.createQuery(criteriaQuery); + return query.getResultList(); + } + + /** + * Tworzy zapytanie nazwane. + * + * @param queryName nazwa zapytania HQL. + * + * @return obiekt zapytania. + */ + protected Query createNamedQuery(final String queryName) { + return sessionFactory.getCurrentSession().createNamedQuery(queryName, clazz); + } + + /** + * Zwraca rodzaj encji. + * + * @return rodzaj encji. + */ + protected Entity getEntity() { + return entity; + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/MembershipType.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/MembershipType.java new file mode 100644 index 0000000..9a8cade --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/MembershipType.java @@ -0,0 +1,66 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.entity; + +import eu.mooseinc.dell.form.entity.base.BaseEntity; +import eu.mooseinc.dell.form.entity.query.MembershipTypeQueries.GetMembershipTypesQuery; +import eu.mooseinc.dell.form.util.ColumnLengthConstants; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +/** + * Type of membership entity + */ +@Entity +@Table(name = MembershipType.TABLE_NAME) +@NamedQueries(// + @NamedQuery(// + name = GetMembershipTypesQuery.NAME,// + query = GetMembershipTypesQuery.QUERY// + )// +) +public class MembershipType extends BaseEntity { + /** + * Table name. + */ + public static final String TABLE_NAME = "registration_membership"; + + + /** + * Type of membership. + */ + @Column(name = "membership_type", length = ColumnLengthConstants.SHORT_TEXT_LENGTH, nullable = false) + private String registrationMembership; + + /** + * Constructor. + */ + public MembershipType() { + } + + /** + * Get type of membership. + * + * @return nazwa firmy. + */ + public String getRegistrationMembership() { + return registrationMembership; + } + + /** + * Set type of membership. + * + * @param registrationMembership nazwa firmy. + */ + public void setRegistrationMembership(String registrationMembership) { + this.registrationMembership = registrationMembership; + } + +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/Registration.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/Registration.java new file mode 100644 index 0000000..ca69e30 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/Registration.java @@ -0,0 +1,203 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.entity; + +import eu.mooseinc.dell.form.entity.base.BaseEntity; +import eu.mooseinc.dell.form.util.ColumnLengthConstants; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * Entity model for registration + */ +public class Registration extends BaseEntity { + + /** + * Entity name. + */ + @NotNull(message = "{notification.entityName.required}") + @Size(min = 1, max = ColumnLengthConstants.SHORT_TEXT_LENGTH, message = "{notification.entityName.size}") + private String entityName; + + /** + * Name. + */ + @NotNull(message = "{notification.name.required}") + @Size(min = 1, max = ColumnLengthConstants.SHORT_TEXT_LENGTH, message = "${notification.name.size}") + private String name; + + /** + * Surname + */ + @NotNull(message = "{notification.surname.required}") + @Size(min = 1, max = ColumnLengthConstants.SHORT_TEXT_LENGTH, message = "${notification.name.size}") + private String surname; + + /** + * E-mail address. + */ + @NotNull(message = "{notification.email.required}") + @Size(min = 1, max = ColumnLengthConstants.EMAIL_LENGTH, message = "{notification.email.size}") + private String email; + + /** + * Type of membership. + */ + @NotNull(message = "{notification.marketSegment.required}") + private MembershipType membershipType; + + /** + * Message body. + */ + @Size(max = ColumnLengthConstants.STANDARD_TEXT_LENGTH, message = "{notification.message.size}") + private String message; + + /** + * Registration date. + */ + @Column(name = "registration_date", nullable = false) + @Temporal(TemporalType.TIMESTAMP) + private Date registrationDate; + + /** + * Constructor. + */ + public Registration() { + } + + /** + * Returns entity name. + * + * @return entity name. + */ + public String getEntityName() { + return entityName; + } + + /** + * Set entity name. + * + * @param entityName entity name. + */ + public void setEntityName(String entityName) { + this.entityName = entityName; + } + + /** + * Returns name. + * + * @return name. + */ + public String getName() { + return name; + } + + /** + * Set name. + * + * @param name name. + */ + public void setName(String name) { + this.name = name; + } + + /** + * Returns surname. + * + * @return surname. + */ + public String getSurname() { + return surname; + } + + /** + * Set surname. + * + * @param surname surname. + */ + public void setSurname(String surname) { + this.surname = surname; + } + + /** + * Returns e-mail. + * + * @return e-mail. + */ + public String getEmail() { + return email; + } + + /** + * Set e-mail. + * + * @param email e-mail. + */ + public void setEmail(String email) { + this.email = email; + } + + /** + * Returns membership type + * + * @return membership type. + */ + public MembershipType getMembershipType() { + return membershipType; + } + + /** + * Set membership type. + * + * @param membershipType Membership Type + */ + public void setMembershipType(MembershipType membershipType) { + this.membershipType = membershipType; + } + + + /** + * Returns message body. + * + * @return message body. + */ + public String getMessage() { + return message; + } + + /** + * Set message body. + * + * @param message message body. + */ + public void setMessage(String message) { + this.message = message; + } + + /** + * Set registration date. + * + * @param registrationDate registration date. + */ + public void setRegistrationDate(Date registrationDate) { + this.registrationDate = registrationDate; + } + + /** + * Returns registration date. + * + * @return registration date. + */ + public Date getRegistrationDate() { + return registrationDate; + } + +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/base/BaseEntity.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/base/BaseEntity.java new file mode 100644 index 0000000..cbc3590 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/base/BaseEntity.java @@ -0,0 +1,68 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.entity.base; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; +import javax.persistence.Version; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.hibernate.id.enhanced.SequenceStyleGenerator; + +/** + * Base class for entity. + */ +@MappedSuperclass +public class BaseEntity { + /** + * Sequence name. + */ + private static final String SEQUENCE_GENERATOR = "registrationform_sequence"; + /** + * Min value for id. + */ + private static final String MIN_SEQUENCE_VALUE = "100"; + /** + * id in database. + */ + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SEQUENCE_GENERATOR) + @GenericGenerator(// + name = SEQUENCE_GENERATOR,// + strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",// + parameters = {// + @Parameter(name = SequenceStyleGenerator.SEQUENCE_PARAM, value = SEQUENCE_GENERATOR),// + @Parameter(name = SequenceStyleGenerator.INITIAL_PARAM, value = MIN_SEQUENCE_VALUE)// + }) + private Long id; + + /** + * Object version for optimistic locking. + */ + @Version + private long version; + + /** + * Returns id of database object. + * + * @return id of database object. + */ + public Long getId() { + return id; + } + + /** + * Returns version of object. + * + * @return object version. + */ + public long getVersion() { + return version; + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/query/MembershipTypeQueries.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/query/MembershipTypeQueries.java new file mode 100644 index 0000000..2d57746 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/entity/query/MembershipTypeQueries.java @@ -0,0 +1,27 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.entity.query; + +/** + * Named query for entity {@link eu.mooseinc.dell.form.entity.MembershipType} + */ +public class MembershipTypeQueries { + /** + * Returns all membership types. + */ + public static final class GetMembershipTypesQuery { + /** + * Nazwa zapytania. + */ + public static final String NAME = "MembershipTypeQuery"; + + /** + * Zapytanie nazwane. + */ + public static final String QUERY = "SELECT n FROM MembershipType n"; + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/DataAccessObjectException.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/DataAccessObjectException.java new file mode 100644 index 0000000..2fed9e6 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/DataAccessObjectException.java @@ -0,0 +1,40 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.exception; + +/** + * Base exception class for DAO layer. + */ +public class DataAccessObjectException extends Exception { + /** + * Constructor. + * + * @param message exception message. + */ + public DataAccessObjectException(final String message) { + super(message); + } + + /** + * Constructor. + * + * @param cause exception cause. + */ + public DataAccessObjectException(final Throwable cause) { + super(cause); + } + + /** + * Constructor. + * + * @param message exception message. + * @param cause exception cause. + */ + public DataAccessObjectException(final String message, final Throwable cause) { + super(message, cause); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ObjectNotFoundException.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ObjectNotFoundException.java new file mode 100644 index 0000000..8d302f6 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ObjectNotFoundException.java @@ -0,0 +1,40 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.exception; + +/** + * Exception that throws if object not exist in database + */ +public class ObjectNotFoundException extends DataAccessObjectException { + /** + * Constructor. + * + * @param message exception message. + */ + public ObjectNotFoundException(String message) { + super(message); + } + + /** + * Constructor. + * + * @param cause exception cause. + */ + public ObjectNotFoundException(Throwable cause) { + super(cause); + } + + /** + * Constructor. + * + * @param message exception message. + * @param cause exception cause. + */ + public ObjectNotFoundException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ServiceException.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ServiceException.java new file mode 100644 index 0000000..80b4447 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/exception/ServiceException.java @@ -0,0 +1,40 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.exception; + +/** + * Bazowa klasa wyjątku warstwy serwisowej. + */ +public class ServiceException extends Exception { + /** + * Constructor. + * + * @param message exception message. + */ + public ServiceException(String message) { + super(message); + } + + /** + * Constructor. + * + * @param message exception message. + * @param cause exception cause. + */ + public ServiceException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Constructor. + * + * @param cause exception cause. + */ + public ServiceException(Throwable cause) { + super(cause); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/Attachment.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/Attachment.java new file mode 100644 index 0000000..836f738 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/Attachment.java @@ -0,0 +1,104 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.io.Serializable; +import java.util.Date; + +/** + * Registration form attachment + */ +public class Attachment implements Serializable { + /** + * File id. + */ + @JsonProperty(value = "id") + private final String id; + + /** + * File name. + */ + @JsonProperty(value = "name") + private final String fileName; + + /** + * File path. + */ + @JsonIgnore + private final String filePath; + + /** + * Constructor. + * + * @param id file id. + * @param fileName file name. + * @param filePath file path. + */ + public Attachment(final String id, final String fileName, final String filePath) { + this.id = id; + this.fileName = fileName; + this.filePath = filePath; + } + + /** + * Constructor. + * + * @param fileName file name. + * @param filePath file path.. + */ + public Attachment(final String fileName, final String filePath) { + this.id = String.valueOf(new Date().getTime()); + this.fileName = fileName; + this.filePath = filePath; + } + + /** + * Returns file id. + * + * @return file id. + */ + public String getId() { + return id; + } + + /** + * Returns file name. + * + * @return file name. + */ + public String getFileName() { + return fileName; + } + + /** + * Returns file path. + * + * @return file path. + */ + public String getFilePath() { + return filePath; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + Attachment attachment = (Attachment) o; + + return id.equals(attachment.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/ErrorMessage.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/ErrorMessage.java new file mode 100644 index 0000000..3dddd7f --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/model/ErrorMessage.java @@ -0,0 +1,29 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Error message + */ +public class ErrorMessage { + @JsonProperty(value = "message") + private String message; + + public ErrorMessage(final String message) { + this.message = message; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/CaptchaService.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/CaptchaService.java new file mode 100644 index 0000000..5f08ee3 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/CaptchaService.java @@ -0,0 +1,21 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service; + +/** + * Interfejs serwisu do obsługi captcha. + */ +public interface CaptchaService { + /** + * Sprawdza, czy captcha wprowadzona przez użytkownika jest prawidłowa. + * + * @param captcha captcha wprowadzona przez użytkownika + * + * @return {@code true} jeśli captcha jest prawidłowa, {@code false} w przeciwnym wypadku. + */ + boolean isCaptchaValid(String captcha); +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MailService.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MailService.java new file mode 100644 index 0000000..8d86083 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MailService.java @@ -0,0 +1,41 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service; + +import eu.mooseinc.dell.form.exception.ServiceException; +import eu.mooseinc.dell.form.model.Attachment; +import java.util.List; + +/** + * Email Service + */ +public interface MailService { + /** + * Send message + * + * @param to message recipients + * @param subject message subject + * @param text body message + * @param attachments list of attachments, cannot be {@code null}. + * + * @throws ServiceException jeśli wystąpi błąd podczas wysyłania wiadomości. + */ + void send(String[] to, String subject, String text, List attachments) throws ServiceException; + + /** + * Sending e-mail message. + * + * @param to message recipients + * @param cc message copy recipients + * @param subject message subject + * @param text body message + * @param attachments list of attachments, cannot be {@code null}. + * + * @throws ServiceException jeśli wystąpi błąd podczas wysyłania wiadomości. + */ + void send(String[] to, String cc, String subject, String text, List attachments) throws ServiceException; +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MembershipTypeService.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MembershipTypeService.java new file mode 100644 index 0000000..c6a2c6b --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/MembershipTypeService.java @@ -0,0 +1,33 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service; + +import eu.mooseinc.dell.form.entity.MembershipType; +import eu.mooseinc.dell.form.exception.ServiceException; +import java.util.List; + +/** + * Membership type service + */ +public interface MembershipTypeService { + + + /** + * @return list of membership types. + * + * @throws ServiceException + */ + List getMembershipTypes(); + + /** + * @param membershipTypeId membershipType id + * + * @return membership type with provided id. + */ + MembershipType findMembershipType(Long membershipTypeId); + +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/RegistrationService.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/RegistrationService.java new file mode 100644 index 0000000..592a70e --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/RegistrationService.java @@ -0,0 +1,30 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service; + +import eu.mooseinc.dell.form.entity.Registration; +import eu.mooseinc.dell.form.exception.ObjectNotFoundException; +import eu.mooseinc.dell.form.exception.ServiceException; + +/** + * Registration service interface. + */ +public interface RegistrationService { + /** + * Send registration request as e-mail. + * + * @param registration registration data. + * + * @return registration data. + * + * @throws ObjectNotFoundException jeśli nie odnaleziono segmentu rynku. + * @throws ServiceException jeśli wystąpi błąd podczas wysyłania wiadomości. + */ + Registration sendRegistration(Registration registration) throws ObjectNotFoundException, + ServiceException; + +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/CaptchaServiceImpl.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/CaptchaServiceImpl.java new file mode 100644 index 0000000..726b3bf --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/CaptchaServiceImpl.java @@ -0,0 +1,75 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service.impl; + +import com.fasterxml.jackson.databind.ObjectMapper; +import eu.mooseinc.dell.form.service.CaptchaService; +import java.io.IOException; +import java.util.Map; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.fluent.Request; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +/** + * Implementacja serwisu do obsługi captcha. + */ +@Service +public class CaptchaServiceImpl implements CaptchaService { + /** + * Logger zdarzeń. + */ + private static final Logger logger = LoggerFactory.getLogger(CaptchaServiceImpl.class); + + @Value("${captcha.secret}") + private String secret; + + @Value("${captcha.url}") + private String url; + + @Value("${captcha.timeout}") + private Integer timeout; + + @Override + public boolean isCaptchaValid(final String captcha) { + if (StringUtils.isEmpty(captcha)) + return false; + final String urlWithParams = createUrlWithParams(captcha); + try { + final String respons = + Request.Get(urlWithParams).connectTimeout(timeout).socketTimeout(timeout).execute().returnContent() + .asString(); + ObjectMapper mapper = new ObjectMapper(); + final Map map = mapper.readValue(respons, Map.class); + return (boolean) map.get("success"); + } + catch (final IOException e) { + logger.warn("Wystąpił błąd podczas potwierdzenia captcha", e); + return true; + } + } + + /** + * Tworzy adres z parametrami. + * + * @param captcha captcha użytkownika. + * + * @return adres z parametrami. + */ + private String createUrlWithParams(final String captcha) { + final StringBuilder urlWithParams = new StringBuilder(); + urlWithParams.append(url); + urlWithParams.append("?secret="); + urlWithParams.append(secret); + urlWithParams.append("&response="); + urlWithParams.append(captcha); + return urlWithParams.toString(); + } +} + diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MailServiceImpl.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MailServiceImpl.java new file mode 100644 index 0000000..04a761c --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MailServiceImpl.java @@ -0,0 +1,109 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service.impl; + +import com.google.common.base.Preconditions; +import eu.mooseinc.dell.form.exception.ServiceException; +import eu.mooseinc.dell.form.model.Attachment; +import eu.mooseinc.dell.form.service.MailService; +import java.io.File; +import java.util.List; +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; + +/** + * Email Service implementation + */ +@Service +public class MailServiceImpl implements MailService { + /** + * legger + */ + private static final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class); + /** + * codding standard for e-mail. + */ + private static final String ENCODING = "UTF-8"; + + /** + * Email sender address + */ + @Value("${mail.from}") + private String from; + + @Autowired + @Qualifier("mailSender") + private JavaMailSender mailSender; + + @Override + public void send(String[] to, String subject, String text, List attachments) throws ServiceException { + Preconditions.checkArgument(to != null && to.length > 0); + Preconditions.checkArgument(StringUtils.isNotEmpty(subject)); + Preconditions.checkArgument(StringUtils.isNotEmpty(text)); + Preconditions.checkArgument(attachments != null); + + sendMail(to, null, subject, text, attachments); + } + + @Override + public void send(String[] to, String cc, String subject, String text, List attachments) throws ServiceException { + Preconditions.checkArgument(to != null && to.length > 0); + Preconditions.checkArgument(StringUtils.isNotEmpty(subject)); + Preconditions.checkArgument(StringUtils.isNotEmpty(text)); + + sendMail(to, cc, subject, text, attachments); + } + + /** + * Sending email message + * + * @param to message recipient + * @param cc meessage copy recipient + * @param subject message subject + * @param text message body + * @param attachments list of attachments + * + * @throws ServiceException when ther is a problem with sending email + */ + private void sendMail(String[] to, String cc, String subject, String text, List attachments) + throws ServiceException { + final MimeMessage message = mailSender.createMimeMessage(); + + try { + final MimeMessageHelper helper = new MimeMessageHelper(message, true, ENCODING); + helper.setTo(to); + helper.setFrom(from); + helper.setSubject(subject); + helper.setText(text, true); + if (StringUtils.isNotEmpty(cc)) + helper.setCc(cc); + + if (attachments != null) { + for (final Attachment attachment : attachments) { + final File file = new File(attachment.getFilePath()); + helper.addAttachment(attachment.getFileName(), file); + } + } + + } + catch (final MessagingException e) { + logger.error("Wystąpił błąd podczas tworzenia wiadomości", e); + throw new ServiceException("Wystąpił błąd podczas tworzenia wiadomości", e); + } + + mailSender.send(message); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MembershipTypeServiceImpl.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MembershipTypeServiceImpl.java new file mode 100644 index 0000000..84e405b --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/MembershipTypeServiceImpl.java @@ -0,0 +1,51 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service.impl; + +import com.google.common.base.Preconditions; +import eu.mooseinc.dell.form.dao.MembershipTypeDao; +import eu.mooseinc.dell.form.entity.MembershipType; +import eu.mooseinc.dell.form.exception.ObjectNotFoundException; +import eu.mooseinc.dell.form.service.MembershipTypeService; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Membership type service implementation. + */ +@Service +public class MembershipTypeServiceImpl implements MembershipTypeService { + + @Autowired + MembershipTypeDao membershipTypeDao; + + @Override + @Transactional(readOnly = true) + public List getMembershipTypes() { + try { + return membershipTypeDao.getMembershipTypes(); + } + catch (Exception e) { + return null; + } + + } + + @Override + @Transactional(readOnly = true) + public MembershipType findMembershipType(final Long id) { + Preconditions.checkArgument(id != null); + try { + return membershipTypeDao.get(id); + } + catch (ObjectNotFoundException e) { + return null; + } + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/RegistrationServiceImpl.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/RegistrationServiceImpl.java new file mode 100644 index 0000000..d27c0e3 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/RegistrationServiceImpl.java @@ -0,0 +1,91 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service.impl; + +import com.google.common.base.Preconditions; +import eu.mooseinc.dell.form.entity.Registration; +import eu.mooseinc.dell.form.exception.ObjectNotFoundException; +import eu.mooseinc.dell.form.exception.ServiceException; +import eu.mooseinc.dell.form.service.MailService; +import eu.mooseinc.dell.form.service.RegistrationService; +import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; +import java.util.Set; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.thymeleaf.TemplateEngine; +import org.thymeleaf.context.Context; + +/** + * Implementation of registration service. + */ +@Service +public class RegistrationServiceImpl implements RegistrationService { + /** + * E-mail message template. + */ + private static final String MAIL_FORM_TEMPLATE = "mailForm.html"; + + @Autowired + private MailService mailService; + + @Value("${mail.recipients}") + private String recipients; + + @Value("${mail.title:'Thank you for your registration with the International Code of Conduct Association.'}") + private String emailTitle; + + @Autowired + @Qualifier("emailTemplateEngine") + private TemplateEngine templateEngine; + + @Override + @Transactional(rollbackFor = {ObjectNotFoundException.class, ServiceException.class}) + public Registration sendRegistration(final Registration registration) + throws ObjectNotFoundException, ServiceException { + Preconditions.checkArgument(registration != null); + + final Set recipientEmails = new HashSet<>(); + recipientEmails.addAll(Arrays.asList(recipients.split(","))); + String[] emails = recipientEmails.toArray(new String[recipientEmails.size()]); + final String cc = registration.getEmail(); + registration.setRegistrationDate(new Date()); + final String content = getMailContent(registration); + final String subject = emailTitle; + mailService.send(emails, cc, subject, content, null); + + + return null; + } + + + /** + * Compiled message body. + * + * @param registration registration data. + * + * @return treść wiadomości. + */ + private String getMailContent(final Registration registration) { + final Context ctx = new Context(); + + ctx.setVariable("fullName", registration.getName() + " " + registration.getSurname()); + ctx.setVariable("entityName", registration.getEntityName()); + ctx.setVariable("name", registration.getName()); + ctx.setVariable("surname", registration.getSurname()); + ctx.setVariable("email", registration.getEmail()); + ctx.setVariable("membershipType", registration.getMembershipType().getRegistrationMembership()); + ctx.setVariable("message", registration.getMessage()); + ctx.setVariable("registrationDate", registration.getRegistrationDate()); + + return templateEngine.process(MAIL_FORM_TEMPLATE, ctx); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/TemporaryDirectoryService.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/TemporaryDirectoryService.java new file mode 100644 index 0000000..b7b2cf1 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/service/impl/TemporaryDirectoryService.java @@ -0,0 +1,43 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.service.impl; + +import java.io.File; +import java.io.IOException; +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +/** + * Service for temporary files. + */ +@Service +public class TemporaryDirectoryService implements InitializingBean { + private static final Logger logger = LoggerFactory.getLogger(TemporaryDirectoryService.class); + + @Value("${temporary.directory}") + private String tempDir; + + @Override + public void afterPropertiesSet() throws Exception { + cleanTemporaryDirectory(); + } + + /** + * Clear temporary folder. + * + * @throws IOException jeśli wystąpi błąd podczas wczytywania katalogu. + */ + private void cleanTemporaryDirectory() throws IOException { + final File directory = new File(tempDir); + FileUtils.cleanDirectory(directory); + logger.debug("Temporary folder cleared"); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/type/Entity.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/type/Entity.java new file mode 100644 index 0000000..c57f576 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/type/Entity.java @@ -0,0 +1,37 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.type; + +/** + * Type of entities in system. + */ +public enum Entity { + MEMBERSHIP_TYPE("Membership type"); + + /** + * Constructor. + * + * @param name entity name. + */ + Entity(final String name) { + this.name = name; + } + + /** + * Entity name. + */ + private final String name; + + /** + * ZReturns entity name. + * + * @return entity name. + */ + public String getName() { + return name; + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/ColumnLengthConstants.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/ColumnLengthConstants.java new file mode 100644 index 0000000..f100300 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/ColumnLengthConstants.java @@ -0,0 +1,29 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.util; + +/** + * Max length of fields. + */ +public interface ColumnLengthConstants { + /** + * Defalult lenght of text in database. + */ + int STANDARD_TEXT_LENGTH = 1000; + + /** + * Defalult lenght of short text in database. + */ + int SHORT_TEXT_LENGTH = 120; + + /** + * Email length. + */ + int EMAIL_LENGTH = 60; + + +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/FileFormUtils.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/FileFormUtils.java new file mode 100644 index 0000000..e316c45 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/util/FileFormUtils.java @@ -0,0 +1,58 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.util; + +import com.google.common.base.Preconditions; +import java.io.File; +import java.io.IOException; +import java.nio.file.FileSystems; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; + +/** + * Klasa pomocnicza dla plików. + */ +public class FileFormUtils { + /** + * Konstruktor prywatny. + */ + private FileFormUtils() { + } + + /** + * Pobiera ścieżkę katalogu tymczasowego sesji. + * + * @param temporaryDirectory katalog tymczasowy. + * @param sessionId identyfikator sesji. + * + * @return ścieżka katalogu tymczasowego. + */ + public static String getSessionDirectoryName(final String temporaryDirectory, final String sessionId) { + Preconditions.checkArgument(StringUtils.isNotEmpty(temporaryDirectory)); + Preconditions.checkArgument(StringUtils.isNotEmpty(sessionId)); + + final StringBuilder directoryName = new StringBuilder(temporaryDirectory); + directoryName.append(FileSystems.getDefault().getSeparator()); + directoryName.append(sessionId); + + return directoryName.toString(); + } + + + /** + * Czyści katalog tymczasowy sesji. + * + * @param directoryName katalog tymczasowy. + * + * @throws IOException jeśli wystąpi błąd podczas czyszczenia katalogu. + */ + public static void cleanSessionDirectory(final String directoryName) throws IOException { + final File directory = new File(directoryName); + FileUtils.cleanDirectory(directory); + } + +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/ConfirmationController.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/ConfirmationController.java new file mode 100644 index 0000000..bb476a4 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/ConfirmationController.java @@ -0,0 +1,30 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.web.controller; + +import java.io.Serializable; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + * Confirmation controller. + */ +@Controller +@Scope("session") +public class ConfirmationController implements Serializable { + /** + * Returns confirmation view. + * + * @return confirmation view. + */ + @RequestMapping(value = "confirmation", method = RequestMethod.GET) + public String showConfirmation() { + return "confirmation"; + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/RegistrationFormController.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/RegistrationFormController.java new file mode 100644 index 0000000..202e207 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/controller/RegistrationFormController.java @@ -0,0 +1,173 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.web.controller; + +import eu.mooseinc.dell.form.entity.MembershipType; +import eu.mooseinc.dell.form.entity.Registration; +import eu.mooseinc.dell.form.service.CaptchaService; +import eu.mooseinc.dell.form.service.MembershipTypeService; +import eu.mooseinc.dell.form.service.RegistrationService; +import eu.mooseinc.dell.form.util.FileFormUtils; +import java.io.File; +import java.io.IOException; +import java.io.Serializable; +import java.util.List; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.servlet.http.HttpSession; +import javax.validation.Valid; +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +/** + * Registration form controller. + */ +@Controller +@Scope("session") +public class RegistrationFormController implements Serializable { + private static final Logger logger = LoggerFactory.getLogger(RegistrationFormController.class); + + @Autowired + private RegistrationService registrationService; + + @Autowired + private MembershipTypeService membershipTypeService; + + @Autowired + private CaptchaService captchaService; + + @Autowired + private HttpSession session; + + @Value("${temporary.directory}") + private String tempDir; + + @Value("${captcha.site_key}") + private String captchaSiteKey; + + /** + * Session directory. + */ + private String sessionDirectoryName; + + /** + * Constructor. + */ + public RegistrationFormController() { + super(); + } + + /** + * Initiation method for controller. + */ + @PostConstruct + public void init() { + this.sessionDirectoryName = FileFormUtils.getSessionDirectoryName(tempDir, session.getId()); + createSessionDirectory(); + } + + /** + * Method called before controller destroyed. + */ + @PreDestroy + public void close() { + deleteSessionDirectory(); + } + + /** + * Returns list of membership types. + * + * @return list of membership types. + */ + @ModelAttribute("allMembershipTypes") + public List getAllMembershipTypes() { + return membershipTypeService.getMembershipTypes(); + } + + @ModelAttribute("siteKey") + public String getSiteKey() { + return captchaSiteKey; + } + + + /** + * Shows registration form. + * + * @param registration wregistration model. + * + * @return registration form view. + */ + @RequestMapping(value = {"/", "registrationForm"}, method = RequestMethod.GET) + public String showContactForm(final Registration registration, final Model model) throws Exception { + model.addAttribute("captcha", true); + FileFormUtils.cleanSessionDirectory(sessionDirectoryName); + return "registrationForm"; + } + + /** + * On sending registration data. + * + * @param registration registration data. + * @param bindingResult response resoult. + * + * @return confirmation view. + */ + @RequestMapping(value = "/", method = RequestMethod.POST, params = {"send"}) + public String sendMessage(final @Valid Registration registration, + final @RequestParam(name = "g-recaptcha-response") String captcha, + final BindingResult bindingResult, + final RedirectAttributes attributes, final Model model) throws Exception { + if (bindingResult.hasErrors()) + return "registrationForm"; + final boolean valid = captchaService.isCaptchaValid(captcha); + if (!valid) { + model.addAttribute("captcha", false); + return "notificationForm"; + } + registrationService.sendRegistration(registration); + FileFormUtils.cleanSessionDirectory(sessionDirectoryName); + return "redirect:/confirmation"; + } + + /** + * Creates session directory. + */ + private void createSessionDirectory() { + try { + final File sessionDirectory = new File(sessionDirectoryName); + FileUtils.forceMkdir(sessionDirectory); + } + catch (final IOException e) { + logger.error("Error with creating session directory", e); + } + } + + /** + * Usuwa katalog sesji. + */ + private void deleteSessionDirectory() { + try { + final File sessionDirectory = new File(sessionDirectoryName); + FileUtils.deleteDirectory(sessionDirectory); + } + catch (final IOException e) { + logger.error("Error with removing session directory", e); + } + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/DateFormatter.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/DateFormatter.java new file mode 100644 index 0000000..4d69bdf --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/DateFormatter.java @@ -0,0 +1,39 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.web.conversion; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import org.springframework.format.Formatter; +import org.springframework.stereotype.Component; + +/** + * Date formatter + */ +@Component +public class DateFormatter implements Formatter { + /** + * Date format. + */ + private static final String DATE_FORMAT = "dd-MM-yyyy"; + + @Override + public Date parse(String text, Locale locale) throws ParseException { + final DateFormat format = new SimpleDateFormat(DATE_FORMAT); + return format.parse(text); + } + + @Override + public String print(Date object, Locale locale) { + final DateFormat format = new SimpleDateFormat(DATE_FORMAT); + format.setLenient(false); + return format.format(object); + } +} diff --git a/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/MembershipTypeFormatter.java b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/MembershipTypeFormatter.java new file mode 100644 index 0000000..5d9ffb8 --- /dev/null +++ b/registration/registration-form/src/main/java/eu/mooseinc/dell/form/web/conversion/MembershipTypeFormatter.java @@ -0,0 +1,37 @@ +/********************************************************************************************************************************* + * Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością + * + * Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością + ********************************************************************************************************************************/ + +package eu.mooseinc.dell.form.web.conversion; + +import eu.mooseinc.dell.form.entity.MembershipType; +import eu.mooseinc.dell.form.service.MembershipTypeService; +import java.text.ParseException; +import java.util.Locale; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.Formatter; +import org.springframework.stereotype.Component; + +/** + * Formatter for Membership Type + */ +@Component +public class MembershipTypeFormatter implements Formatter { + + @Autowired + private MembershipTypeService membershipTypeService; + + @Override + public MembershipType parse(String text, Locale locale) throws ParseException { + final Long marketSegmentId = Long.valueOf(text); + return membershipTypeService.findMembershipType(marketSegmentId); + } + + @Override + public String print(MembershipType membershipType, Locale locale) { + return membershipType != null ? membershipType.getId().toString() : StringUtils.EMPTY; + } +} diff --git a/registration/registration-form/src/main/resources/ValidationMessages.properties b/registration/registration-form/src/main/resources/ValidationMessages.properties new file mode 100644 index 0000000..5a43ca4 --- /dev/null +++ b/registration/registration-form/src/main/resources/ValidationMessages.properties @@ -0,0 +1,24 @@ +################################################################################################################################## +# Autorskie Prawa Maj\u0105tkowe - Moose Sp\u00F3\u0142ka z ograniczon\u0105 odpowiedzialno\u015Bci\u0105 +# +# Copyright 2017 Moose Sp\u00F3\u0142ka z ograniczon\u0105 odpowiedzialno\u015Bci\u0105 +################################################################################################################################## + +registration.entityName.required=Nazwa firmy zg\u0142aszaj\u0105cej jest wymagane +registration.entityName.size=D\u0142ugo\u015B\u0107 pola Nazwa firmy zg\u0142aszaj\u0105cej musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} +registration.name.required=Imi\u0119 i nazwisko jest wymagane +registration.name.size=D\u0142ugo\u015B\u0107 pola Imi\u0119 i nazwisko musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} +registration.surname.required=Imi\u0119 i nazwisko jest wymagane +registration.surname.size=D\u0142ugo\u015B\u0107 pola Imi\u0119 i nazwisko musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} +registration.email.required=Adres e-mail jest wymagany +registration.email.size=D\u0142ugo\u015B\u0107 pola Adres e-mail musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} +registration.phone.required=Telefon kontaktowy jest wymagany +registration.phone.size=D\u0142ugo\u015B\u0107 pola Telefon kontaktowy musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} +registration.clientName.required=Nazwa klienta ko\u0144cowego jest wymagana +registration.clientName.size=D\u0142ugo\u015B\u0107 pola Nazwa klienta ko\u0144cowego musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} +registration.marketSegment.required=Segment rynku jest wymagany +registration.proceedingDate.required=Data sk\u0142adania post\u0119powania jest wymagana +registration.questionDate.required=Data ostatecznego zadawania pyta\u0144 jest wymagana +registration.proceedingLink.required=Pole Link do post\u0119powania jest wymagane +registration.proceedingLink.size=D\u0142ugo\u015B\u0107 pola Link do post\u0119powania musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} +registration.message.size=D\u0142ugo\u015B\u0107 pola Uwagi musi znajdowa\u0107 si\u0119 w przedziale pomi\u0119dzy {min} a {max} \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/default.properties b/registration/registration-form/src/main/resources/default.properties new file mode 100644 index 0000000..76d9dfd --- /dev/null +++ b/registration/registration-form/src/main/resources/default.properties @@ -0,0 +1,18 @@ +################################################################################################################################## +# Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością +# +# Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością +################################################################################################################################## + +database.connection.max_active = 30 +database.connection.max_idle = 15 +database.connection.min_idle = 5 +database.connection.initial_size = 5 +database.connection.max_wait = 60000 +database.hibernate.show_sql = false +database.hibernate.default_schema=public + +captcha.site_key=6Lc6CTwUAAAAAD_lAkSjZWv3SJR-VHWiRHmCRYYK +captcha.secret=6Lc6CTwUAAAAADfghUpCi0i_-Ra_9nNoXktlsEtY +captcha.url=https://www.google.com/recaptcha/api/siteverify +captcha.timeout=60 \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/embedded/tomcat-context.xml b/registration/registration-form/src/main/resources/embedded/tomcat-context.xml new file mode 100644 index 0000000..341bd81 --- /dev/null +++ b/registration/registration-form/src/main/resources/embedded/tomcat-context.xml @@ -0,0 +1,10 @@ + + + + WEB-INF/web.xml + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/log4j.properties b/registration/registration-form/src/main/resources/log4j.properties new file mode 100644 index 0000000..b4e1dae --- /dev/null +++ b/registration/registration-form/src/main/resources/log4j.properties @@ -0,0 +1,14 @@ +################################################################################################################################## +# Autorskie Prawa Majątkowe - Moose Spółka z ograniczoną odpowiedzialnością +# +# Copyright 2017 Moose Spółka z ograniczoną odpowiedzialnością +################################################################################################################################## + +# Root logger option +log4j.rootLogger=WARN, stdout + +# Direct log messages to stdout +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/logback.xml b/registration/registration-form/src/main/resources/logback.xml new file mode 100644 index 0000000..aecc68b --- /dev/null +++ b/registration/registration-form/src/main/resources/logback.xml @@ -0,0 +1,21 @@ + + + + + true + + + + + %-5level %d{yyyy-MM-dd HH:mm:ss.SSS} %logger{50} %msg%n + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/spring/beans.xml b/registration/registration-form/src/main/resources/spring/beans.xml new file mode 100644 index 0000000..f55b28c --- /dev/null +++ b/registration/registration-form/src/main/resources/spring/beans.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/spring/configuration.xml b/registration/registration-form/src/main/resources/spring/configuration.xml new file mode 100644 index 0000000..986a90a --- /dev/null +++ b/registration/registration-form/src/main/resources/spring/configuration.xml @@ -0,0 +1,22 @@ + + + + + + + classpath:default.properties + + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/spring/context.xml b/registration/registration-form/src/main/resources/spring/context.xml new file mode 100644 index 0000000..83e7d3a --- /dev/null +++ b/registration/registration-form/src/main/resources/spring/context.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/spring/job.xml b/registration/registration-form/src/main/resources/spring/job.xml new file mode 100644 index 0000000..7c09bf2 --- /dev/null +++ b/registration/registration-form/src/main/resources/spring/job.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/spring/mail.xml b/registration/registration-form/src/main/resources/spring/mail.xml new file mode 100644 index 0000000..7a0380b --- /dev/null +++ b/registration/registration-form/src/main/resources/spring/mail.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + 30000 + 30000 + 30000 + true + ${mail.use_tls} + ${mail.from} + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/spring/orm.xml b/registration/registration-form/src/main/resources/spring/orm.xml new file mode 100644 index 0000000..ced672c --- /dev/null +++ b/registration/registration-form/src/main/resources/spring/orm.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + ${database.hibernate.dialect} + ${database.hibernate.show_sql} + validate + 0 + true + ${database.hibernate.default_schema} + + + + + + + + + + eu.mooseinc.dell.form.entity + + + + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/spring/thymeleaf.xml b/registration/registration-form/src/main/resources/spring/thymeleaf.xml new file mode 100644 index 0000000..d65d32a --- /dev/null +++ b/registration/registration-form/src/main/resources/spring/thymeleaf.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/resources/template/mailForm.html b/registration/registration-form/src/main/resources/template/mailForm.html new file mode 100644 index 0000000..c63ad42 --- /dev/null +++ b/registration/registration-form/src/main/resources/template/mailForm.html @@ -0,0 +1,54 @@ + + + + + + Template for HTML email + + + + +
+
+ Thank you for your registration with the International Code of Conduct Association. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Entity name:entityName
First name:name
Last name:surname
E-mail:email
Entity is seeking:membershipType
Registration date:registrationDate
Message:message
+
+
+ + \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/META-INF/context.xml b/registration/registration-form/src/main/webapp/META-INF/context.xml new file mode 100644 index 0000000..ed8b955 --- /dev/null +++ b/registration/registration-form/src/main/webapp/META-INF/context.xml @@ -0,0 +1,5 @@ + + + WEB-INF/web.xml + + diff --git a/registration/registration-form/src/main/webapp/WEB-INF/spring-servlet.xml b/registration/registration-form/src/main/webapp/WEB-INF/spring-servlet.xml new file mode 100644 index 0000000..3c5901d --- /dev/null +++ b/registration/registration-form/src/main/webapp/WEB-INF/spring-servlet.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/WEB-INF/view/confirmation.html b/registration/registration-form/src/main/webapp/WEB-INF/view/confirmation.html new file mode 100644 index 0000000..4700d02 --- /dev/null +++ b/registration/registration-form/src/main/webapp/WEB-INF/view/confirmation.html @@ -0,0 +1,39 @@ + + + + + + + Registration form + + + + + + + +
+ +
+

Thank you for your registration.

+

+ Your message was sent to the International Code of Conduct Association. +

+ Return to ICoCA Website +
+
+ + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/WEB-INF/view/error.html b/registration/registration-form/src/main/webapp/WEB-INF/view/error.html new file mode 100644 index 0000000..a4a203f --- /dev/null +++ b/registration/registration-form/src/main/webapp/WEB-INF/view/error.html @@ -0,0 +1,33 @@ + + + + + + + Formularz kontaktowy + + + + + + +
+
+

Oops!

+

An error occurred in the application. Please contact with administrator.

+ Spróbuj ponownie +
+
+ + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/WEB-INF/view/registrationForm.html b/registration/registration-form/src/main/webapp/WEB-INF/view/registrationForm.html new file mode 100644 index 0000000..5512b8e --- /dev/null +++ b/registration/registration-form/src/main/webapp/WEB-INF/view/registrationForm.html @@ -0,0 +1,183 @@ + + + + + + + + Registration form + + + + + + + + +
+ + + + + +
+ +
+
+ + +
+ +
+
+
+
+ + + +
+ +
+
+ + +
+ +
+
+
+
+ + +
+ +
+
+ + +
+ +
+
+
+
+ + +
+ +
+
+ + +
+ +
+
+
+
+ + + +
+ +
+
+ + +
+ +
+
+
+
+ + + +
+ +
+
+ + + +
+
+
+
+ + +
+ +
+
+
+ +
+
+
I'm not a robot
+
+
+ + +
+
+ +
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/WEB-INF/web.xml b/registration/registration-form/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..fb25fee --- /dev/null +++ b/registration/registration-form/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + + spring + org.springframework.web.servlet.DispatcherServlet + 1 + + + + spring + / + + \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/resources/css/bootstrap-datepicker3.min.css b/registration/registration-form/src/main/webapp/resources/css/bootstrap-datepicker3.min.css new file mode 100644 index 0000000..897f246 --- /dev/null +++ b/registration/registration-form/src/main/webapp/resources/css/bootstrap-datepicker3.min.css @@ -0,0 +1,9 @@ +/*! + * Datepicker for Bootstrap v1.6.4 (https://github.com/eternicode/bootstrap-datepicker) + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ +.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0;padding:4px}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.15);border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid rgba(0,0,0,.15)}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.new,.datepicker table tr td.old{color:#777}.datepicker table tr td.day:hover,.datepicker table tr td.focused{background:#eee;cursor:pointer}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#777;cursor:default}.datepicker table tr td.highlighted{color:#000;background-color:#d9edf7;border-color:#85c5e5;border-radius:0}.datepicker table tr td.highlighted.focus,.datepicker table tr td.highlighted:focus{color:#000;background-color:#afd9ee;border-color:#298fc2}.datepicker table tr td.highlighted:hover{color:#000;background-color:#afd9ee;border-color:#52addb}.datepicker table tr td.highlighted.active,.datepicker table tr td.highlighted:active{color:#000;background-color:#afd9ee;border-color:#52addb}.datepicker table tr td.highlighted.active.focus,.datepicker table tr td.highlighted.active:focus,.datepicker table tr td.highlighted.active:hover,.datepicker table tr td.highlighted:active.focus,.datepicker table tr td.highlighted:active:focus,.datepicker table tr td.highlighted:active:hover{color:#000;background-color:#91cbe8;border-color:#298fc2}.datepicker table tr td.highlighted.disabled.focus,.datepicker table tr td.highlighted.disabled:focus,.datepicker table tr td.highlighted.disabled:hover,.datepicker table tr td.highlighted[disabled].focus,.datepicker table tr td.highlighted[disabled]:focus,.datepicker table tr td.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.highlighted.focus,fieldset[disabled] .datepicker table tr td.highlighted:focus,fieldset[disabled] .datepicker table tr td.highlighted:hover{background-color:#d9edf7;border-color:#85c5e5}.datepicker table tr td.highlighted.focused{background:#afd9ee}.datepicker table tr td.highlighted.disabled,.datepicker table tr td.highlighted.disabled:active{background:#d9edf7;color:#777}.datepicker table tr td.today{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focus,.datepicker table tr td.today:focus{color:#000;background-color:#ffc966;border-color:#b37400}.datepicker table tr td.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today:active{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active.focus,.datepicker table tr td.today.active:focus,.datepicker table tr td.today.active:hover,.datepicker table tr td.today:active.focus,.datepicker table tr td.today:active:focus,.datepicker table tr td.today:active:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today[disabled].focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today.focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focused{background:#ffc966}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:active{background:#ffdb99;color:#777}.datepicker table tr td.range{color:#000;background-color:#eee;border-color:#bbb;border-radius:0}.datepicker table tr td.range.focus,.datepicker table tr td.range:focus{color:#000;background-color:#d5d5d5;border-color:#7c7c7c}.datepicker table tr td.range:hover{color:#000;background-color:#d5d5d5;border-color:#9d9d9d}.datepicker table tr td.range.active,.datepicker table tr td.range:active{color:#000;background-color:#d5d5d5;border-color:#9d9d9d}.datepicker table tr td.range.active.focus,.datepicker table tr td.range.active:focus,.datepicker table tr td.range.active:hover,.datepicker table tr td.range:active.focus,.datepicker table tr td.range:active:focus,.datepicker table tr td.range:active:hover{color:#000;background-color:#c3c3c3;border-color:#7c7c7c}.datepicker table tr td.range.disabled.focus,.datepicker table tr td.range.disabled:focus,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range[disabled].focus,.datepicker table tr td.range[disabled]:focus,.datepicker table tr td.range[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.focus,fieldset[disabled] .datepicker table tr td.range:focus,fieldset[disabled] .datepicker table tr td.range:hover{background-color:#eee;border-color:#bbb}.datepicker table tr td.range.focused{background:#d5d5d5}.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:active{background:#eee;color:#777}.datepicker table tr td.range.highlighted{color:#000;background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focus,.datepicker table tr td.range.highlighted:focus{color:#000;background-color:#c1d7e3;border-color:#4b88a6}.datepicker table tr td.range.highlighted:hover{color:#000;background-color:#c1d7e3;border-color:#73a6c0}.datepicker table tr td.range.highlighted.active,.datepicker table tr td.range.highlighted:active{color:#000;background-color:#c1d7e3;border-color:#73a6c0}.datepicker table tr td.range.highlighted.active.focus,.datepicker table tr td.range.highlighted.active:focus,.datepicker table tr td.range.highlighted.active:hover,.datepicker table tr td.range.highlighted:active.focus,.datepicker table tr td.range.highlighted:active:focus,.datepicker table tr td.range.highlighted:active:hover{color:#000;background-color:#a8c8d8;border-color:#4b88a6}.datepicker table tr td.range.highlighted.disabled.focus,.datepicker table tr td.range.highlighted.disabled:focus,.datepicker table tr td.range.highlighted.disabled:hover,.datepicker table tr td.range.highlighted[disabled].focus,.datepicker table tr td.range.highlighted[disabled]:focus,.datepicker table tr td.range.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.highlighted.focus,fieldset[disabled] .datepicker table tr td.range.highlighted:focus,fieldset[disabled] .datepicker table tr td.range.highlighted:hover{background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focused{background:#c1d7e3}.datepicker table tr td.range.highlighted.disabled,.datepicker table tr td.range.highlighted.disabled:active{background:#e4eef3;color:#777}.datepicker table tr td.range.today{color:#000;background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.focus,.datepicker table tr td.range.today:focus{color:#000;background-color:#f4b747;border-color:#815608}.datepicker table tr td.range.today:hover{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:active{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active.focus,.datepicker table tr td.range.today.active:focus,.datepicker table tr td.range.today.active:hover,.datepicker table tr td.range.today:active.focus,.datepicker table tr td.range.today:active:focus,.datepicker table tr td.range.today:active:hover{color:#000;background-color:#f2aa25;border-color:#815608}.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today[disabled].focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today.focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:active{background:#f7ca77;color:#777}.datepicker table tr td.selected,.datepicker table tr td.selected.highlighted{color:#fff;background-color:#777;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.focus,.datepicker table tr td.selected.highlighted.focus,.datepicker table tr td.selected.highlighted:focus,.datepicker table tr td.selected:focus{color:#fff;background-color:#5e5e5e;border-color:#161616}.datepicker table tr td.selected.highlighted:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#5e5e5e;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.highlighted.active,.datepicker table tr td.selected.highlighted:active,.datepicker table tr td.selected:active{color:#fff;background-color:#5e5e5e;border-color:#373737}.datepicker table tr td.selected.active.focus,.datepicker table tr td.selected.active:focus,.datepicker table tr td.selected.active:hover,.datepicker table tr td.selected.highlighted.active.focus,.datepicker table tr td.selected.highlighted.active:focus,.datepicker table tr td.selected.highlighted.active:hover,.datepicker table tr td.selected.highlighted:active.focus,.datepicker table tr td.selected.highlighted:active:focus,.datepicker table tr td.selected.highlighted:active:hover,.datepicker table tr td.selected:active.focus,.datepicker table tr td.selected:active:focus,.datepicker table tr td.selected:active:hover{color:#fff;background-color:#4c4c4c;border-color:#161616}.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.highlighted.disabled.focus,.datepicker table tr td.selected.highlighted.disabled:focus,.datepicker table tr td.selected.highlighted.disabled:hover,.datepicker table tr td.selected.highlighted[disabled].focus,.datepicker table tr td.selected.highlighted[disabled]:focus,.datepicker table tr td.selected.highlighted[disabled]:hover,.datepicker table tr td.selected[disabled].focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover{background-color:#777;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.highlighted{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.focus,.datepicker table tr td.active.highlighted.focus,.datepicker table tr td.active.highlighted:focus,.datepicker table tr td.active:focus{color:#fff;background-color:#286090;border-color:#122b40}.datepicker table tr td.active.highlighted:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td.active.active,.datepicker table tr td.active.highlighted.active,.datepicker table tr td.active.highlighted:active,.datepicker table tr td.active:active{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td.active.active.focus,.datepicker table tr td.active.active:focus,.datepicker table tr td.active.active:hover,.datepicker table tr td.active.highlighted.active.focus,.datepicker table tr td.active.highlighted.active:focus,.datepicker table tr td.active.highlighted.active:hover,.datepicker table tr td.active.highlighted:active.focus,.datepicker table tr td.active.highlighted:active:focus,.datepicker table tr td.active.highlighted:active:hover,.datepicker table tr td.active:active.focus,.datepicker table tr td.active:active:focus,.datepicker table tr td.active:active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.highlighted.disabled.focus,.datepicker table tr td.active.highlighted.disabled:focus,.datepicker table tr td.active.highlighted.disabled:hover,.datepicker table tr td.active.highlighted[disabled].focus,.datepicker table tr td.active.highlighted[disabled]:focus,.datepicker table tr td.active.highlighted[disabled]:hover,.datepicker table tr td.active[disabled].focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active.focus,fieldset[disabled] .datepicker table tr td.active.highlighted.focus,fieldset[disabled] .datepicker table tr td.active.highlighted:focus,fieldset[disabled] .datepicker table tr td.active.highlighted:hover,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover{background-color:#337ab7;border-color:#2e6da4}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#777;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover.focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.focus,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover.focus,.datepicker table tr td span.active:hover:focus{color:#fff;background-color:#286090;border-color:#122b40}.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td span.active.active.focus,.datepicker table tr td span.active.active:focus,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.disabled.active.focus,.datepicker table tr td span.active.disabled.active:focus,.datepicker table tr td span.active.disabled.active:hover,.datepicker table tr td span.active.disabled:active.focus,.datepicker table tr td span.active.disabled:active:focus,.datepicker table tr td span.active.disabled:active:hover,.datepicker table tr td span.active.disabled:hover.active.focus,.datepicker table tr td span.active.disabled:hover.active:focus,.datepicker table tr td span.active.disabled:hover.active:hover,.datepicker table tr td span.active.disabled:hover:active.focus,.datepicker table tr td span.active.disabled:hover:active:focus,.datepicker table tr td span.active.disabled:hover:active:hover,.datepicker table tr td span.active:active.focus,.datepicker table tr td span.active:active:focus,.datepicker table tr td span.active:active:hover,.datepicker table tr td span.active:hover.active.focus,.datepicker table tr td span.active:hover.active:focus,.datepicker table tr td span.active:hover.active:hover,.datepicker table tr td span.active:hover:active.focus,.datepicker table tr td span.active:hover:active:focus,.datepicker table tr td span.active:hover:active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.datepicker table tr td span.active.disabled.disabled.focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled.focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled].focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled].focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled.focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled].focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled].focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active.disabled.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active.focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#337ab7;border-color:#2e6da4}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#777}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;line-height:1.42857143;text-shadow:0 1px 0 #fff;border-width:1px 0;margin-left:-5px;margin-right:-5px} +/*# sourceMappingURL=bootstrap-datepicker3.min.css.map */ \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/resources/css/bootstrap.min.css b/registration/registration-form/src/main/webapp/resources/css/bootstrap.min.css new file mode 100644 index 0000000..ed3905e --- /dev/null +++ b/registration/registration-form/src/main/webapp/resources/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered 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{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[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;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}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;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote 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}.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}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 col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>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}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]: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,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#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}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.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+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}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}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.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;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.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);-webkit-box-shadow:none;box-shadow:none;opacity:.65}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;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.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.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;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.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.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;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.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.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;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.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.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;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.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.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;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.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.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-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a: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;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.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}}.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-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@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}.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-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .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-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .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-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-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-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-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-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-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:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a: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>.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}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.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}.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{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{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-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;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;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{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}.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-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;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;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>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: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{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,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;filter:alpha(opacity=90);outline:0;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/registration/registration-form/src/main/webapp/resources/css/style.css b/registration/registration-form/src/main/webapp/resources/css/style.css new file mode 100644 index 0000000..233555b --- /dev/null +++ b/registration/registration-form/src/main/webapp/resources/css/style.css @@ -0,0 +1,73 @@ +.form-title { + color: #337ab7; + font-weight: bold; +} + +.header { + text-align: center; +} + +.glyphicon { + top: 0 !important; +} + +.count-static { + text-align: right; +} + +.input-group-margin { + margin-bottom: 15px; +} + +.resize-off { + resize: none; +} + +.file-row { + margin-bottom: 5px; + padding: 5px !important; +} + +.delete-file { + text-align: right; +} + +.form-group.required .control-label:after { + content:" *"; + color:red; +} + +.file-upload { + margin-bottom: 25px; +} + +.panel-heading { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} + +.validation-errors { + color: #a94442; +} + +.hidden { + visibility: hidden; + width: 0; +} + +.captcha { + margin-top: 25px; +} + +.textarea { + resize: none; + height: 150px; +} + +.g-recaptcha-left { + padding-left: 0; +} + +.aligntop { + vertical-align: top; +} \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.eot b/registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.ttf b/registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff2 b/registration/registration-form/src/main/webapp/resources/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/registration/registration-form/src/main/webapp/resources/img/favicon.ico b/registration/registration-form/src/main/webapp/resources/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c374e165ad624a5c8cb86a619f1ab5b511681f7a GIT binary patch literal 1150 zcmb7^+fNfw5XR3rEg~pvF=~t$qavUPNDRF|xN79yme5iNSh1FBH4-hf1=NxPkr?W*Osj8VroCXP95l*m1_# z1u_azBpD}{@|g1;LCBVlpfwFcZE1+O3>cz&`8?`4jKNkt0xdd3x^mR@aQi`ZEoe>0 zjQaqB_CrX#dXDluhBxsUEKiT3tGNhI0zG(_m`7(rA!18WEWH@P-JUwcS0<5{!?5}G zB_6eK;xqC2;|AW-)qNsxDVEt=W&?xIU36ZT$KX-bqx2L^zhc};IweGT+w61rdN6SzQ#9}ad@u^Omz#a`vsP7 zanfA}yGfw3fWt^RWnNiR?VsvPzUCrF)G4rXn<3^)+OSQax`?Ukavxd^=_NDRmh8X& z634PfV2!xd{-mvVIIfq7T}&!|)Tv;?#j&={Y5d$xj{4&L`H3C{i+y~juEsA=>{$AFYSh5rct1{%b~hyVZp literal 0 HcmV?d00001 diff --git a/registration/registration-form/src/main/webapp/resources/img/favicon.png b/registration/registration-form/src/main/webapp/resources/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..9df04cdff8652e11efb42eb838784052a502874f GIT binary patch literal 626 zcmV-&0*(ENP)0006JNkl*u0o4{6)tpfe{0-=#N$Ywy9Q5lYNt)}dvtXt4r0*qLs8;U(HV36P9CVHad!>MR6uqQcS8t#X; zu17+liDQRi(a5uVH{d9MHNAiIaB|zn=}cj*{Pg8phtqkdGcJyYxZrA?>lgO zXjd;0QTXi5%F2>r2D8^RE4BrY%h0RU8Z-NSUFC|UNzHMT065t57aFzcASVm5*Z=?k M07*qoM6N<$f&?`aTL1t6 literal 0 HcmV?d00001 diff --git a/registration/registration-form/src/main/webapp/resources/img/icoca.png b/registration/registration-form/src/main/webapp/resources/img/icoca.png new file mode 100644 index 0000000000000000000000000000000000000000..74345a82bbb810491edfff69e2cef33483769fde GIT binary patch literal 15936 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[c].valueOf()===b)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a(b).data("datepicker",this),this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInput=this.element.is("input"),this.inputField=this.isInput?this.element:this.element.find("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .btn"):!1,this.hasInput=this.component&&this.inputField.length,this.component&&0===this.component.length&&(this.component=!1),this.isInline=!this.component&&this.element.is("div"),this.picker=a(r.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find("thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this._o.startDate),this.setEndDate(this._o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted),this.setDatesDisabled(this.o.datesDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};k.prototype={constructor:k,_resolveViewName:function(a,c){return 0===a||"days"===a||"month"===a?0:1===a||"months"===a||"year"===a?1:2===a||"years"===a||"decade"===a?2:3===a||"decades"===a||"century"===a?3:4===a||"centuries"===a||"millennium"===a?4:c===b?!1:c},_check_template:function(c){try{if(c===b||""===c)return!1;if((c.match(/[<>]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(e){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView,0),e.minViewMode=this._resolveViewName(e.minViewMode,0),e.maxViewMode=this._resolveViewName(e.maxViewMode,4),e.startView=Math.min(e.startView,e.maxViewMode),e.startView=Math.max(e.startView,e.minViewMode),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=e.daysOfWeekDisabled||[],a.isArray(e.daysOfWeekDisabled)||(e.daysOfWeekDisabled=e.daysOfWeekDisabled.split(/[,\s]*/)),e.daysOfWeekDisabled=a.map(e.daysOfWeekDisabled,function(a){return parseInt(a,10)}),e.daysOfWeekHighlighted=e.daysOfWeekHighlighted||[],a.isArray(e.daysOfWeekHighlighted)||(e.daysOfWeekHighlighted=e.daysOfWeekHighlighted.split(/[,\s]*/)),e.daysOfWeekHighlighted=a.map(e.daysOfWeekHighlighted,function(a){return parseInt(a,10)}),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=[e.datesDisabled]),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;ff?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=0>p?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate,d?this.setValue():c.length&&String(b)!==String(this.dates)&&this._trigger("changeDate"),!this.dates.length&&b.length&&this._trigger("clearDate"),this.fill(),this.element.change(),this},fillDow:function(){var b=this.o.weekStart,c="";for(this.o.calendarWeeks&&(this.picker.find(".datepicker-days .datepicker-switch").attr("colspan",function(a,b){return parseInt(b)+1}),c+=' ');b";c+="",this.picker.find(".datepicker-days thead").append(c)},fillMonths:function(){for(var a=this._utc_to_local(this.viewDate),b="",c=0;12>c;){var d=a&&a.getMonth()===c?" focused":"";b+=''+q[this.o.language].monthsShort[c++]+""}this.picker.find(".datepicker-months td").html(b)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),f=new Date;return b.getUTCFullYear()d||b.getUTCFullYear()===d&&b.getUTCMonth()>e)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&b.getUTCFullYear()===f.getFullYear()&&b.getUTCMonth()===f.getMonth()&&b.getUTCDate()===f.getDate()&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&br;r+=1)s=[d],t=null,-1===r?s.push("old"):10===r&&s.push("new"),-1!==a.inArray(q,n)&&s.push("active"),(o>q||q>p)&&s.push("disabled"),q===this.viewDate.getFullYear()&&s.push("focused"),j!==a.noop&&(u=j(new Date(q,0,1)),u===b?u={}:"boolean"==typeof u?u={enabled:u}:"string"==typeof u&&(u={classes:u}),u.enabled===!1&&s.push("disabled"),u.classes&&(s=s.concat(u.classes.split(/\s+/))),u.tooltip&&(t=u.tooltip)),k+='"+q+"",q+=f;l.find("td").html(k)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).toggle(this.o.todayBtn!==!1),this.picker.find("tfoot .clear").text(n).toggle(this.o.clearBtn!==!1),this.picker.find("thead .datepicker-title").text(this.o.title).toggle(""!==this.o.title),this.updateNavArrows(),this.fillMonths();var p=c(g,h-1,28),s=r.getDaysInMonth(p.getUTCFullYear(),p.getUTCMonth());p.setUTCDate(s),p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v=[];p.valueOf()"),this.o.calendarWeeks)){var w=new Date(+p+(this.o.weekStart-p.getUTCDay()-7)%7*864e5),x=new Date(Number(w)+(11-w.getUTCDay())%7*864e5),y=new Date(Number(y=c(x.getUTCFullYear(),0,1))+(11-y.getUTCDay())%7*864e5),z=(x-y)/864e5/7+1;v.push(''+z+"")}u=this.getClassNames(p),u.push("day"),this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&u.push("disabled"),e.classes&&(u=u.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip)),u=a.isFunction(a.uniqueSort)?a.uniqueSort(u):a.unique(u),v.push('"+p.getUTCDate()+""),d=null,p.getUTCDay()===this.o.weekEnd&&v.push(""),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(v.join(""));var A=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",B=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?A:g).end().find("span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&B.eq(b.getUTCMonth()).addClass("active")}),(i>g||g>k)&&B.addClass("disabled"),g===i&&B.slice(0,j).addClass("disabled"),g===k&&B.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var C=this;a.each(B,function(c,d){var e=new Date(g,c,1),f=C.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,1,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,10,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,100,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:case 2:case 3:case 4:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h,i,j,k;e=a(b.target),e.hasClass("datepicker-switch")&&this.showMode(1);var l=e.closest(".prev, .next");l.length>0&&(f=r.modes[this.viewMode].navStep*(l.hasClass("prev")?-1:1),0===this.viewMode?(this.viewDate=this.moveMonth(this.viewDate,f),this._trigger("changeMonth",this.viewDate)):(this.viewDate=this.moveYear(this.viewDate,f),1===this.viewMode&&this._trigger("changeYear",this.viewDate)),this.fill()),e.hasClass("today")&&!e.hasClass("day")&&(this.showMode(-2),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("day")&&(g=parseInt(e.text(),10)||1,h=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),e.hasClass("old")&&(0===i?(i=11,h-=1,j=!0,k=!0):(i-=1,j=!0)),e.hasClass("new")&&(11===i?(i=0,h+=1,j=!0,k=!0):(i+=1,j=!0)),this._setDate(c(h,i,g)),k&&this._trigger("changeYear",this.viewDate),j&&this._trigger("changeMonth",this.viewDate)),e.hasClass("month")&&(this.viewDate.setUTCDate(1),g=1,i=e.parent().find("span").index(e),h=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(i),this._trigger("changeMonth",this.viewDate),1===this.o.minViewMode?(this._setDate(c(h,i,g)),this.showMode()):this.showMode(-1),this.fill()),(e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),g=1,i=0,h=parseInt(e.text(),10)||0,this.viewDate.setUTCFullYear(h),e.hasClass("year")&&(this._trigger("changeYear",this.viewDate),2===this.o.minViewMode&&this._setDate(c(h,i,g))),e.hasClass("decade")&&(this._trigger("changeDecade",this.viewDate),3===this.o.minViewMode&&this._setDate(c(h,i,g))),e.hasClass("century")&&(this._trigger("changeCentury",this.viewDate),4===this.o.minViewMode&&this._setDate(c(h,i,g))),this.showMode(-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&a(this._focused_from).focus(),delete this._focused_from},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),b&&"view"!==b||(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField&&this.inputField.change(),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),(0>c||c>11)&&(c=(c+12)%12);else{for(var j=0;i>j;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void((40===a.keyCode||27===a.keyCode)&&(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?((38===a.keyCode||40===a.keyCode)&&(b=4*b),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&((38===a.keyCode||40===a.keyCode)&&(b=4*b),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField&&this.inputField.change())},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,this.viewMode+a))),this.picker.children("div").hide().filter(".datepicker-"+r.modes[this.viewMode].clsName).show(),this.updateNavArrows()}};var l=function(b,c){a(b).data("datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data("datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){if(!this.updating){this.updating=!0;var c=a(b.target).data("datepicker");if("undefined"!=typeof c){var d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=e-1,g=e+1,h=this.inputs.length;if(-1!==e){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b.setUTCDate(d)}),d=0&&dthis.dates[g])for(;h>g&&d>this.dates[g];)this.pickers[g++].setUTCDate(d);this.updateDates(),delete this.updating}}}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"}},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10},{clsName:"decades",navFnc:"FullDecade",navStep:100},{clsName:"centuries",navFnc:"FullCentury",navStep:1e3}],isLeapYear:function(a){return a%4===0&&a%100!==0||a%400===0},getDaysInMonth:function(a,b){return[31,r.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\x00").split("\x00"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(e,f,g,h){function i(a,b){return b===!0&&(b=10),100>a&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function j(){var a=this.slice(0,s[n].length),b=s[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!e)return b;if(e instanceof Date)return e;if("string"==typeof f&&(f=r.parseFormat(f)),f.toValue)return f.toValue(e,f,g);var l,m,n,o,p=/([\-+]\d+)([dmwy])/,s=e.match(/([\-+]\d+)([dmwy])/g),t={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},u={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e)){for(e=new Date,n=0;nb;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};z.M=z.MM=z.mm=z.m,z.dd=z.d,e=d();var A=f.parts.slice();if(s.length!==A.length&&(A=a(A).filter(function(b,c){return-1!==a.inArray(c,y)}).toArray()),s.length===A.length){var B;for(n=0,B=A.length;B>n;n++){if(v=parseInt(s[n],10),l=A[n],isNaN(v))switch(l){case"MM":w=a(q[g].months).filter(j),v=a.inArray(w[0],q[g].months)+1;break;case"M":w=a(q[g].monthsShort).filter(j),v=a.inArray(w[0],q[g].monthsShort)+1}x[l]=v}var C,D;for(n=0;n=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'«»',contTemplate:'',footTemplate:''};r.template='
'+r.headTemplate+""+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+"
",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.6.4",a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/resources/js/bootstrap.min.js b/registration/registration-form/src/main/webapp/resources/js/bootstrap.min.js new file mode 100644 index 0000000..9bcd2fc --- /dev/null +++ b/registration/registration-form/src/main/webapp/resources/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/registration/registration-form/src/main/webapp/resources/js/ie10-viewport-bug-workaround.js b/registration/registration-form/src/main/webapp/resources/js/ie10-viewport-bug-workaround.js new file mode 100644 index 0000000..479a6eb --- /dev/null +++ b/registration/registration-form/src/main/webapp/resources/js/ie10-viewport-bug-workaround.js @@ -0,0 +1,23 @@ +/*! + * IE10 viewport hack for Surface/desktop Windows 8 bug + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// See the Getting Started docs for more information: +// http://getbootstrap.com/getting-started/#support-ie10-width + +(function () { + 'use strict'; + + if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement('style') + msViewportStyle.appendChild( + document.createTextNode( + '@-ms-viewport{width:auto!important}' + ) + ) + document.querySelector('head').appendChild(msViewportStyle) + } + +})(); diff --git a/registration/registration-form/src/main/webapp/resources/js/jquery.iframe-transport.js b/registration/registration-form/src/main/webapp/resources/js/jquery.iframe-transport.js new file mode 100644 index 0000000..b7922e6 --- /dev/null +++ b/registration/registration-form/src/main/webapp/resources/js/jquery.iframe-transport.js @@ -0,0 +1,217 @@ +/* + * jQuery Iframe Transport Plugin + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/* global define, require, window, document */ + +;(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS: + factory(require('jquery')); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + // Helper variable to create unique names for the transport iframes: + var counter = 0; + + // The iframe transport accepts four additional options: + // options.fileInput: a jQuery collection of file input fields + // options.paramName: the parameter name for the file form data, + // overrides the name property of the file input field(s), + // can be a string or an array of strings. + // options.formData: an array of objects with name and value properties, + // equivalent to the return data of .serializeArray(), e.g.: + // [{name: 'a', value: 1}, {name: 'b', value: 2}] + // options.initialIframeSrc: the URL of the initial iframe src, + // by default set to "javascript:false;" + $.ajaxTransport('iframe', function (options) { + if (options.async) { + // javascript:false as initial iframe src + // prevents warning popups on HTTPS in IE6: + /*jshint scripturl: true */ + var initialIframeSrc = options.initialIframeSrc || 'javascript:false;', + /*jshint scripturl: false */ + form, + iframe, + addParamChar; + return { + send: function (_, completeCallback) { + form = $('
'); + form.attr('accept-charset', options.formAcceptCharset); + addParamChar = /\?/.test(options.url) ? '&' : '?'; + // XDomainRequest only supports GET and POST: + if (options.type === 'DELETE') { + options.url = options.url + addParamChar + '_method=DELETE'; + options.type = 'POST'; + } else if (options.type === 'PUT') { + options.url = options.url + addParamChar + '_method=PUT'; + options.type = 'POST'; + } else if (options.type === 'PATCH') { + options.url = options.url + addParamChar + '_method=PATCH'; + options.type = 'POST'; + } + // IE versions below IE8 cannot set the name property of + // elements that have already been added to the DOM, + // so we set the name along with the iframe HTML markup: + counter += 1; + iframe = $( + '' + ).bind('load', function () { + var fileInputClones, + paramNames = $.isArray(options.paramName) ? + options.paramName : [options.paramName]; + iframe + .unbind('load') + .bind('load', function () { + var response; + // Wrap in a try/catch block to catch exceptions thrown + // when trying to access cross-domain iframe contents: + try { + response = iframe.contents(); + // Google Chrome and Firefox do not throw an + // exception when calling iframe.contents() on + // cross-domain requests, so we unify the response: + if (!response.length || !response[0].firstChild) { + throw new Error(); + } + } catch (e) { + response = undefined; + } + // The complete callback returns the + // iframe content document as response object: + completeCallback( + 200, + 'success', + {'iframe': response} + ); + // Fix for IE endless progress bar activity bug + // (happens on form submits to iframe targets): + $('') + .appendTo(form); + window.setTimeout(function () { + // Removing the form in a setTimeout call + // allows Chrome's developer tools to display + // the response result + form.remove(); + }, 0); + }); + form + .prop('target', iframe.prop('name')) + .prop('action', options.url) + .prop('method', options.type); + if (options.formData) { + $.each(options.formData, function (index, field) { + $('') + .prop('name', field.name) + .val(field.value) + .appendTo(form); + }); + } + if (options.fileInput && options.fileInput.length && + options.type === 'POST') { + fileInputClones = options.fileInput.clone(); + // Insert a clone for each file input field: + options.fileInput.after(function (index) { + return fileInputClones[index]; + }); + if (options.paramName) { + options.fileInput.each(function (index) { + $(this).prop( + 'name', + paramNames[index] || options.paramName + ); + }); + } + // Appending the file input fields to the hidden form + // removes them from their original location: + form + .append(options.fileInput) + .prop('enctype', 'multipart/form-data') + // enctype must be set as encoding for IE: + .prop('encoding', 'multipart/form-data'); + // Remove the HTML5 form attribute from the input(s): + options.fileInput.removeAttr('form'); + } + form.submit(); + // Insert the file input fields at their original location + // by replacing the clones with the originals: + if (fileInputClones && fileInputClones.length) { + options.fileInput.each(function (index, input) { + var clone = $(fileInputClones[index]); + // Restore the original name and form properties: + $(input) + .prop('name', clone.prop('name')) + .attr('form', clone.attr('form')); + clone.replaceWith(input); + }); + } + }); + form.append(iframe).appendTo(document.body); + }, + abort: function () { + if (iframe) { + // javascript:false as iframe src aborts the request + // and prevents warning popups on HTTPS in IE6. + // concat is used to avoid the "Script URL" JSLint error: + iframe + .unbind('load') + .prop('src', initialIframeSrc); + } + if (form) { + form.remove(); + } + } + }; + } + }); + + // The iframe transport returns the iframe content document as response. + // The following adds converters from iframe to text, json, html, xml + // and script. + // Please note that the Content-Type for JSON responses has to be text/plain + // or text/html, if the browser doesn't include application/json in the + // Accept header, else IE will show a download dialog. + // The Content-Type for XML responses on the other hand has to be always + // application/xml or text/xml, so IE properly parses the XML response. + // See also + // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation + $.ajaxSetup({ + converters: { + 'iframe text': function (iframe) { + return iframe && $(iframe[0].body).text(); + }, + 'iframe json': function (iframe) { + return iframe && $.parseJSON($(iframe[0].body).text()); + }, + 'iframe html': function (iframe) { + return iframe && $(iframe[0].body).html(); + }, + 'iframe xml': function (iframe) { + var xmlDoc = iframe && iframe[0]; + return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc : + $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || + $(xmlDoc.body).html()); + }, + 'iframe script': function (iframe) { + return iframe && $.globalEval($(iframe[0].body).text()); + } + } + }); + +})); diff --git a/registration/registration-form/src/main/webapp/resources/js/jquery.min.js b/registration/registration-form/src/main/webapp/resources/js/jquery.min.js new file mode 100644 index 0000000..e836475 --- /dev/null +++ b/registration/registration-form/src/main/webapp/resources/js/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; +}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("