diff options
author | Christian Kollmann <christian.kollmann@a-sit.at> | 2021-12-07 07:51:10 +0100 |
---|---|---|
committer | Christian Kollmann <christian.kollmann@a-sit.at> | 2021-12-07 11:01:13 +0100 |
commit | 8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6 (patch) | |
tree | 2b379387a1ac8c046b98860dd114abcd64227afb /basicConfig | |
parent | ac56869c2a981e40d6cf4637fb8fd46c06207c9d (diff) | |
download | National_eIDAS_Gateway-8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6.tar.gz National_eIDAS_Gateway-8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6.tar.bz2 National_eIDAS_Gateway-8d2aa68bc18c04c2b03cbdd01f008a89e4c8c1c6.zip |
Unify HTML templates across test, main, basicConfig
Diffstat (limited to 'basicConfig')
-rw-r--r-- | basicConfig/properties/messages.properties | 19 | ||||
-rw-r--r-- | basicConfig/properties/messages_de.properties | 18 | ||||
-rw-r--r-- | basicConfig/templates/other_login_method.html | 264 | ||||
-rw-r--r-- | basicConfig/templates/residency.html | 39 | ||||
-rw-r--r-- | basicConfig/webcontent/css/css_country.css | 293 |
5 files changed, 268 insertions, 365 deletions
diff --git a/basicConfig/properties/messages.properties b/basicConfig/properties/messages.properties index ab7988c9..5f24f0da 100644 --- a/basicConfig/properties/messages.properties +++ b/basicConfig/properties/messages.properties @@ -97,8 +97,8 @@ gui.countryselection.country.ro=Romania gui.countryselection.country.ro.logo.alt=Romania-eID gui.countryselection.country.sk=Slovakia gui.countryselection.country.sk.logo.alt=Slovakia-eID -gui.countryselection.country.sw=Sweden -gui.countryselection.country.sw.logo.alt=Sweden-eID +gui.countryselection.country.se=Sweden +gui.countryselection.country.se.logo.alt=Sweden-eID gui.countryselection.country.uk=United Kingdom gui.countryselection.country.uk.logo.alt=United Kingdom-eID @@ -110,17 +110,20 @@ gui.countryselection.mode.qs=QS gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Other Login Methods +gui.otherlogin.header.selection=Select an alternative login method +gui.otherlogin.hs=Mobile Signature ("Handy-Signatur") +gui.otherlogin.eidas=Alternative eIDAS ID +gui.otherlogin.none=No alternative login methods +gui.otherlogin.cancel=Cancel + ##Austrian Residency page gui.residency.title=Austrian Residency -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Mainpage BMI -gui.residency.header1=Federal Ministry of Internal Affairs -gui.residency.header2=Austrian Central eIDAS Node -gui.residency.header3=Operated by Federal Ministry of Internal Affairs gui.residency.header.selection=Search for your Austrian Residency gui.residency.header.help=You can search for the address that you have been registered at in the past. Please enter a \ - Municipality or Village first to start the search. + postcode, municipality or village first to start the search. gui.residency.header.inputinvalid=Be sure to enter a value for Municipality or Village gui.residency.cancel=Cancel gui.residency.search=Search diff --git a/basicConfig/properties/messages_de.properties b/basicConfig/properties/messages_de.properties index e539c2d9..95489b32 100644 --- a/basicConfig/properties/messages_de.properties +++ b/basicConfig/properties/messages_de.properties @@ -96,8 +96,8 @@ gui.countryselection.country.ro=Romänien gui.countryselection.country.ro.logo.alt=Romänische-eID gui.countryselection.country.sk=Slovakei gui.countryselection.country.sk.logo.alt=Slovakische-eID -gui.countryselection.country.sw=Schweden -gui.countryselection.country.sw.logo.alt=Schwedische-eID +gui.countryselection.country.se=Schweden +gui.countryselection.country.se.logo.alt=Schwedische-eID gui.countryselection.country.uk=Großbritanien gui.countryselection.country.uk.logo.alt=Britische-eID @@ -109,17 +109,19 @@ gui.countryselection.mode.qs=Qualitätsicherung gui.countryselection.mode.test=Test gui.countryselection.mode.dev=Development +##Other Login Methods page +gui.otherlogin.title=eIDAS-Login Alternative Anmeldemethoden +gui.otherlogin.header.selection=Wählen Sie eine alternative Anmeldemethode +gui.otherlogin.hs=Handy-Signatur +gui.otherlogin.eidas=Alternativer eIDAS Login +gui.otherlogin.none=Keine +gui.otherlogin.cancel=Abbrechen ##Austrian Residency page gui.residency.title=Österreichischer Wohnsitz -gui.residency.logo.bmi.alt=Logo BMI -gui.residency.link.bmi=Startseite BMI -gui.residency.header1=Bundesministerium für Inneres -gui.residency.header2=Zentraler eIDAS Knoten der Republik Österreich -gui.residency.header3=Betrieben durch das Bundesministerium für Inneres gui.residency.header.selection=Suche nach Österreichischem Wohnsitz gui.residency.header.help=Hier können Sie nach einem Wohnsitze in Österreich suchen. Bitte geben Sie zuerst eine \ - Gemeinde oder Ortschaft ein um die Suche zu starten. + Postleitzahl, Gemeinde oder Ortschaft ein um die Suche zu starten. gui.residency.header.inputinvalid=Bitte geben Sie einen Wert für Gemeinde oder Ortschaft ein gui.residency.cancel=Abbrechen gui.residency.search=Suche diff --git a/basicConfig/templates/other_login_method.html b/basicConfig/templates/other_login_method.html index fffe3930..c233c5c4 100644 --- a/basicConfig/templates/other_login_method.html +++ b/basicConfig/templates/other_login_method.html @@ -4,224 +4,74 @@ layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> <head> - <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> - <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title> -<script type="text/javascript"> -</script> -<style> -body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} - -div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; -} -div.titlebar { - padding: 0px; -} -div.titlebar div { -} -.hidden { - display: none; -} -ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; -} -li { - display: inline-block; -} -div.header a { - text-decoration: none; - color: black; -} -a { - text-decoration: none; - color: #a22c1c; -} -.block { - /* override country.css */ - padding-bottom: 20px; -} -@media only screen and (min-width: 1000px) { - div.header { - padding-left: 137px; - padding-right: 137px; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - footer { - padding-left: 137px; - padding-right: 137px; - } -} -@media only screen and (max-width: 999px) { - div.header { - padding-left: 1em; - padding-right: 1em; - } - .content { - padding-left: 1em; - padding-right: 1em; - } - footer { - padding-left: 1em; - padding-right: 1em; - } -} - -div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; -} -div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; -} -footer { - left: 0; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; -} -.float { - float: left; -} -.floatright { - float: right; -} -.copyright { - width: 66%; - font-size: 80%; -} -#countries { - padding-bottom: 40px; -} -#country { - padding-bottom: 20px; -} -input[type=submit] { - width: inherit; -/* text-align: left; */ -} -form { - justify-content: center; -} -</style> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> + <title th:text="#{gui.otherlogin.title}">eIDAS-Login Other Login Methods</title> </head> <body> - <div class="header container"> +<div class="header container"> <div class="titlebar"> - <div> - <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> - <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" - th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> - <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> - </a> - </div> - <ul class="nav_oben"> - <li> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock - </div> - </li> - - <li><a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}" > Startseite BMI </a></li> - </ul> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> + </ul> </div> - </div> - <div class="content"> +</div> +<div class="content"> <div class="subtitle"> - <h1 th:text="#{gui.countryselection.header2}" > Zentraler eIDAS Knoten der Republik Österreich </h1> - <h2 th:text="#{gui.countryselection.header3}" > Betrieben durch das Bundesministerium für Inneres </h2> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> - <h1 th:text="#{gui.matching.otherloginmethod.header}"> Zuordnung Ihrer Anmeldeinformationen </h1> - - <p th:text="#{gui.matching.otherloginmethod.info.text}" >Ihre Anmeldeinformationen konnten nicht eindeutig in das österreichische eID System integriert werden. - Für eine eindeutig Integration sind weitere Informationen erforderlich. </p> - - - <div th:if="${advancedMatchingFailed != null} and ${advancedMatchingFailed}"> - <b th:text="#{gui.matching.otherloginmethod.error.title}">Info</b> <span th:text="#{gui.matching.otherloginmethod.error.msg}"></span></p> + <h1 th:text="#{gui.otherlogin.header.selection}"> Select an alternative login method </h1> + + <div id="otherlogin"> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Handy-Signatur / Mobile Signature" + th:attr="value=#{gui.otherlogin.hs}"/> + <input type="hidden" name="loginSelection" value="MOBILE_PHONE_SIGNATURE_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Andere eIDAS ID" th:attr="value=#{gui.otherlogin.eidas}"/> + <input type="hidden" name="loginSelection" value="EIDAS_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" role="button" value="Keine weitere HS / eIDAS" th:attr="value=#{gui.otherlogin.none}"/> + <input type="hidden" name="loginSelection" value="NO_OTHER_LOGIN"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"/> + </form> </div> - <div id="country"> - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Sie verfügen über einen ID Austria" th:attr="value=#{gui.matching.otherloginmethod.ida}" /> - <input type="hidden" name="loginSelection" value="MOBILE_PHONE_SIGNATURE_LOGIN"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Sie können zusätzliche Informationen via eIDAS bereitstellen" th:attr="value=#{gui.matching.otherloginmethod.eidas}" /> - <input type="hidden" name="loginSelection" value="EIDAS_LOGIN"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Sie waren bereits einmal in Österreich wohnhaft" th:attr="value=#{gui.matching.otherloginmethod.residence}" /> - <input type="hidden" name="loginSelection" value="NO_OTHER_LOGIN"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" role="button" value="Neuregistrierung im österreichischen eID System" th:attr="value=#{gui.matching.otherloginmethod.addmeasnew}" /> - <input type="hidden" name="loginSelection" value="ADD_ME_AS_NEW"> - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}" /> - </form> - </div> - - <!-- Abbrechen Button --> - <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancel}"> - <input type="hidden" name="stopAuthProcess" value="true" > - <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> + <form class="block" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> + <input type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" + th:attr="value=#{gui.otherlogin.cancel}"> + <input type="hidden" name="stopAuthProcess" value="true"> + <input type="hidden" name="pendingid" value="$pendingid" th:attr="value=${pendingid}"> </form> - -<h2 th:text="#{gui.countryselection.infos.general.header}" > Information zur Anmeldung über Europäische eIDs </h2> -<p> - <span th:text="#{gui.countryselection.infos.general.part.1}"> first part </span> - <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.header1}" > Bundesministerium für Inneres </a> - <span th:text="#{gui.countryselection.infos.general.part.2}"> second part </span> -</p> - -<p> - <span th:text="#{gui.countryselection.infos.general.part.3}"> third part </span> - <a href="https://eur-lex.europa.eu/legal-content/DE/TXT/HTML/?uri=CELEX:32014R0910&from=DE" target="_blank" th:text="#{gui.countryselection.infos.general.link.1}"> eIDAS-Verordnung der Europäischen Union </a> - <span th:text="#{gui.countryselection.infos.general.part.4}"> fourth part </span> -</p> - -<p - <span th:text="#{gui.countryselection.infos.general.part.5}"> fived part </span> - <a href="https://www.dsb.gv.at/-/das-erganzungsregister-fur-naturliche-personen-ernp-" target="_blank" th:text="#{gui.countryselection.infos.general.link.2}" ></a> - <span th:text="#{gui.countryselection.infos.general.part.6}"> sixed part </span> -</p> - - </div> - <footer> - <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> - <div></div> - </footer> +</div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/basicConfig/templates/residency.html b/basicConfig/templates/residency.html index b434b9f9..8192a068 100644 --- a/basicConfig/templates/residency.html +++ b/basicConfig/templates/residency.html @@ -3,7 +3,6 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="fragments/base" th:with="lang=${#locale.language}" th:lang="${lang}"> - <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="width=device-width, initial-scale=1"> @@ -102,17 +101,41 @@ </head> <body> -<div id="page"> - <div class="languageselection" th:include="language_selection :: selectlanguage"> - LanguageSelectionBlock +<div class="header container"> + <div class="titlebar"> + <div> + <a href="https://www.bmi.gv.at/" target="_blank" title="Home"> + <img class="toplogo img-responsive" src="/static/BMI.png" alt="Logo BMI" + th:attr="alt=#{gui.countryselection.logo.bmi.alt}"> + <h1 class="hidden" th:text="#{gui.countryselection.header1}"> Bundesministerium für Inneres </h1> + </a> + </div> + <ul class="nav_oben"> + <li> + <div class="languageselection" th:include="language_selection :: selectlanguage"> + LanguageSelectionBlock + </div> + </li> + + <li> + <a href="https://www.bmi.gv.at/" target="_blank" th:text="#{gui.countryselection.link.bmi}">Startseite + BMI </a> + </li> + </ul> + </div> +</div> +<div class="content"> + <div class="subtitle"> + <h1 th:text="#{gui.countryselection.header2}"> Zentraler eIDAS Knoten der Republik Österreich </h1> + <h2 th:text="#{gui.countryselection.header3}"> Betrieben durch das Bundesministerium für Inneres </h2> </div> - <h2 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h2> + <h1 th:text="#{gui.residency.header.selection}">Search your Austrian Residency</h1> <div id="residency"> <form id="inputForm" method="post" action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}"> - <div th:text="#{gui.residency.header.help}">Please enter a Municipality or Village first</div> + <div th:text="#{gui.residency.header.help}">Please enter a postcode, municipality or village first</div> <div> <label for="inputPostleitzahl" th:text="#{gui.residency.input.postleitzahl}">Postleitzahl</label> <input type="text" id="inputPostleitzahl" name="postleitzahl" value=""/> @@ -181,5 +204,9 @@ </form> </div> +<footer> + <div class="copyright">© BUNDESMINISTERIUM FÜR INNERES</div> + <div></div> +</footer> </body> </html> diff --git a/basicConfig/webcontent/css/css_country.css b/basicConfig/webcontent/css/css_country.css index 4091955f..bc575c90 100644 --- a/basicConfig/webcontent/css/css_country.css +++ b/basicConfig/webcontent/css/css_country.css @@ -1,137 +1,158 @@ @charset "utf-8"; - body { - background-image: none; - margin: 0px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - #page { - padding-top: 2%; - padding-left: 10%; - } - - #country { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: center; - } - - .block { - display: flex; - flex-direction: row; - flex-wrap: wrap; - cursor: pointer; - text-decoration: none; - padding-right:2%; - width: 250px; - } - - .countryimage { - width:50px; - height:50px; - padding-right: 2%; - padding-bottom: 4%; - } - - input[type=button], input[type=submit], input[type=reset] { - display:flex; - background-color:transparent; - border:none; - color: black; - text-decoration: none; - cursor: pointer; - } - #testEnvironment { - border: none; - color: black; - padding: 10px 20px; - text-decoration: none; - margin: 4px 2px; - height: 3%; - display: inline-block; - vertical-align: middle; - width: 40%; - } - #button{ - background-color: transparent; - border:none; - } - div.header { - background-color: #e9ecef; - padding-top: 28px; - padding-left: 137px; - padding-right: 137px; - padding-bottom: 12px; - } - div.titlebar { - padding: 0px; - } - div.titlebar div { - } - .hidden { - display: none; - } - ul.nav_oben { - padding: 0px; - margin: 0px; - text-align: right; - text-transform: uppercase; - } - li { - display: inline-block; - } - div.header a { - text-decoration: none; - color: black; - } - a { - text-decoration: none; - color: #a22c1c; - } - .content { - padding-left: 137px; - padding-right: 137px; - } - div.subtitle h1 { - padding: 0px; - margin: 0px; - font-size: 130%; - align: right; - } - div.subtitle h2 { - padding: 0px; - margin: 0px; - font-size: 115%; - } - footer { - position: fixed; - left: 0; - padding-left: 137px; - padding-right: 137px; - padding-top: 1em; - bottom: 0; - width: 100%; - height: 2em; - background-color: rgb(162,44,28); - color: white; - } - .float { - float: left; - } - .floatright { - float: right; - } - .copyright { - width: 66%; - font-size: 80%; - } - #countries,#country { - padding-bottom: 40px; - } - input[type=submit] { - width: inherit; - /* text-align: left; */ - } - form { - justify-content: center; - }
\ No newline at end of file +body { + background-image: none; + margin: 0px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +#page { + padding-top: 2%; + padding-left: 10%; +} + +#country { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} + +.block { + display: flex; + flex-direction: row; + flex-wrap: wrap; + cursor: pointer; + text-decoration: none; + padding-right: 2%; + width: 250px; +} + +.countryimage { + width: 50px; + height: 50px; + padding-right: 2%; + padding-bottom: 4%; +} + +input[type=button], input[type=submit], input[type=reset] { + display: flex; + background-color: transparent; + border: none; + color: black; + text-decoration: none; + cursor: pointer; +} + +#testEnvironment { + border: none; + color: black; + padding: 10px 20px; + text-decoration: none; + margin: 4px 2px; + height: 3%; + display: inline-block; + vertical-align: middle; + width: 40%; +} + +#button { + background-color: transparent; + border: none; +} + +div.header { + background-color: #e9ecef; + padding-top: 28px; + padding-left: 137px; + padding-right: 137px; + padding-bottom: 12px; +} + +div.titlebar { + padding: 0px; +} + +div.titlebar div { +} + +.hidden { + display: none; +} + +ul.nav_oben { + padding: 0px; + margin: 0px; + text-align: right; + text-transform: uppercase; +} + +li { + display: inline-block; +} + +div.header a { + text-decoration: none; + color: black; +} + +a { + text-decoration: none; + color: #a22c1c; +} + +.content { + padding-left: 137px; + padding-right: 137px; +} + +div.subtitle h1 { + padding: 0px; + margin: 0px; + font-size: 130%; + align: right; +} + +div.subtitle h2 { + padding: 0px; + margin: 0px; + font-size: 115%; +} + +footer { + position: fixed; + left: 0; + padding-left: 137px; + padding-right: 137px; + padding-top: 1em; + bottom: 0; + width: 100%; + height: 2em; + background-color: rgb(162, 44, 28); + color: white; +} + +.float { + float: left; +} + +.floatright { + float: right; +} + +.copyright { + width: 66%; + font-size: 80%; +} + +#countries, #country { + padding-bottom: 40px; +} + +input[type=submit] { + width: inherit; + /* text-align: left; */ +} + +form { + justify-content: center; +}
\ No newline at end of file |