diff --git a/qml/pages/About.qml b/qml/pages/About.qml
index 033c690..2fa4dc7 100644
--- a/qml/pages/About.qml
+++ b/qml/pages/About.qml
@@ -47,13 +47,10 @@ Page {
width: parent.width
spacing: Theme.paddingSmall
- TextArea {
- id: spacer
- anchors.horizontalCenter: parent.horizontalCenter
- width: parent.width
- readOnly: true
- text: ""
- height: Theme.paddingLarge*2
+ // Spacer
+ Item {
+ width: parent.width
+ height: Theme.paddingLarge
}
Image {
id: logo
@@ -66,71 +63,186 @@ Page {
font.bold: true
text: "SailOTP " + Qt.application.version
}
- TextArea {
- id: desc
+ Label {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
horizontalAlignment: TextEdit.Center
- readOnly: true
- text: qsTr("A Simple Sailfish OTP Generator\n(RFC 6238/4226 compatible)")
+ text: qsTr("A simple Sailfish OTP generator")
color: Theme.primaryColor
}
- TextArea {
- id: copyright
+ Label {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
horizontalAlignment: TextEdit.Center
- readOnly: true
- text: qsTr("Copyright: Stefan Brand\nLicense: BSD (3-clause)")
+ font.pixelSize: Theme.fontSizeSmall
+ text: qsTr("(RFC 6238/4226 compatible)")
color: Theme.primaryColor
}
+ // Spacer
+ Item {
+ width: parent.width
+ height: Theme.paddingMedium
+ }
Button {
- id: manual
+ text: qsTr("Online Manual")
anchors.horizontalCenter: parent.horizontalCenter
- text: "Online Manual"
onClicked: {
Qt.openUrlExternally("https://www.seiichiro0185.org/sailfish:apps:sailotp:manual")
}
}
Button {
- id: homepage
+ text: qsTr("Source Code & Issue Tracker")
anchors.horizontalCenter: parent.horizontalCenter
- text: "Source Code & Issue Tracker"
onClicked: {
Qt.openUrlExternally("https://github.com/seiichiro0185/sailotp/")
}
}
- TextArea {
- id: acknowledgement
- anchors.horizontalCenter: parent.horizontalCenter
+ // Spacer
+ Item {
width: parent.width
- font.pixelSize: Theme.fontSizeSmall
- horizontalAlignment: TextEdit.Center
- readOnly: true
- text: "\n"+qsTr("SailOTP uses the following third party libs:")+"\n\nhttp://caligatio.github.io/jsSHA/\nhttps://code.google.com/archive/p/crypto-js/\nhttp://sourceforge.net/projects/qzxing/\nhttp://fukuchi.org/works/qrencode/"
- color: Theme.primaryColor
+ height: Theme.paddingMedium
}
-
- TextArea {
- id: contributors
+ Label {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
font.pixelSize: Theme.fontSizeSmall
- horizontalAlignment: TextEdit.Center
- readOnly: true
- text: qsTr("Contributors:")+"\n\nRobin Appelman: SteamGuard "+qsTr("Support")
- color: Theme.primaryColor
+ horizontalAlignment: Text.Center
+ wrapMode: Text.WordWrap
+ text: qsTr("Copyright") + " Stefan Brand"
+ color: Theme.secondaryHighlightColor
}
-
- TextArea {
- id: translators
+ Label {
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
font.pixelSize: Theme.fontSizeSmall
+ horizontalAlignment: Text.Center
+ wrapMode: Text.WordWrap
+ text: qsTr("License") + " " + qsTr("BSD (3-clause)")
+ color: Theme.secondaryHighlightColor
+ }
+ Item {
+ width: parent.width
+ height: Theme.paddingMedium
+ }
+ Label {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width
+ font.pixelSize: Theme.fontSizeMedium
horizontalAlignment: TextEdit.Center
- readOnly: true
- text: qsTr("Translators:")+"\n\nChinese: BirdZhang\nFinnish: Johan Heikkilä\nFrench: Romain Tartière\nItalian: Tichy\nDutch: JSEHV\nRussian: moorchegue\nSpanish: p4moedo\nSwedish: Åke Engelbrektson\nEnglish: Stefan Brand\nGerman: Stefan Brand"
- color: Theme.primaryColor
+ wrapMode: Text.WordWrap
+ text: qsTr("Contributors:")
+ color: Theme.secondaryHighlightColor
+ }
+ DetailItem {
+ width: parent.width
+ anchors.horizontalCenter: parent.horizontalCenter
+ label: qsTr("SteamGuard support")
+ value: "Robin Appelman"
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+
+ }
+ DetailItem {
+ label: qsTr("Search")
+ value: "Jyri-Petteri Paloposki"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ Item {
+ width: parent.width
+ height: Theme.paddingMedium
+ }
+ Label {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width
+ font.pixelSize: Theme.fontSizeMedium
+ horizontalAlignment: Text.Center
+ wrapMode: Text.WordWrap
+ text: qsTr("Translators:")
+ color: Theme.secondaryHighlightColor
+ }
+ DetailItem {
+ label: "Chinese"
+ value: "BirdZhang"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "Finnish"
+ value: "Johan Heikkilä, Jyri-Petteri Paloposki"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "French"
+ value: "Romain Tartière"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "Italian"
+ value: "Tichy"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "Dutch"
+ value: "JSEHV"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "Russian"
+ value: "moorchegue"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "Spanish"
+ value: "p4moedo"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "Swedish"
+ value: "Åke Engelbrektson"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "English"
+ value: "Stefan Brand"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ DetailItem {
+ label: "German"
+ value: "Stefan Brand"
+ width: parent.width
+ alignment: Qt.AlignLeft
+ leftMargin: Theme.paddingLarge*2
+ }
+ LinkedLabel {
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width - Theme.paddingLarge*4
+ font.pixelSize: Theme.fontSizeSmall
+ horizontalAlignment: TextEdit.left
+ plainText: "\n"+qsTr("SailOTP uses the following third party libs:")+'
+ http://caligatio.github.io/jsSHA/
+ https://code.google.com/archive/p/crypto-js/
+ http://sourceforge.net/projects/qzxing/
+ http://fukuchi.org/works/qrencode/'
+ color: Theme.secondaryHighlightColor
}
}
VerticalScrollDecorator { }
diff --git a/qml/pages/MainView.qml b/qml/pages/MainView.qml
index 577a39a..a81ecd3 100644
--- a/qml/pages/MainView.qml
+++ b/qml/pages/MainView.qml
@@ -139,9 +139,10 @@ Page {
width: parent.width
ProgressBar {
id: updateProgress
- // Hack to get the Progress Bar in roughly the same spot on Light and Dark Ambiances
- anchors.topMargin: Theme.colorScheme === 0 ? Theme.paddingLarge * 1.1 : Theme.paddingSmall * 0.6
- height: Theme.itemSizeSmall
+ anchors.topMargin: Theme.paddingLarge * 1.15
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ height: parent.height
width: parent.width * 0.65
maximumValue: 29
value: 29 - seconds_global
@@ -159,10 +160,12 @@ Page {
Row {
id: searchRow
width: parent.width
- TextField {
+ SearchField {
id: searchField
font.pixelSize: Theme.fontSizeMedium
- width: parent.width - clearIcon.width
+ width: parent.width
+// This would be useful, but seems to break the button altogether. Perhaps it'll work later?
+// canHide: true
EnterKey.enabled: false
inputMethodHints: Qt.ImhNoPredictiveText // Qt.ImhPreferUppercase | Qt.ImhNoAutoUppercase
placeholderText: qsTr("Search")
@@ -172,12 +175,6 @@ Page {
}
}
}
- IconButton {
- id: clearIcon
- icon.source: "image://theme/icon-m-backspace"
- onClicked: searchField.text = ""
- enabled: searchField.text.length > 0
- }
}
}
diff --git a/rpm/harbour-sailotp.changes b/rpm/harbour-sailotp.changes
index 996df04..19e142a 100644
--- a/rpm/harbour-sailotp.changes
+++ b/rpm/harbour-sailotp.changes
@@ -1,3 +1,8 @@
+* Mon Jan 11 2021 Stefan Brand 1.9.1-1
+- Fix About Page (contributed in parts by Jyri-Petteri Paloposki)
+- Update Swedish Translation (contributed by Åke Engelbrektson)
+- Small Visual Fix for the Progressbar
+
* Mon Jan 04 2021 Stefan Brand 1.9.0-1
- Add Search Functionality (conbtributed by Jyri-Petteri Paloposki)
- Updated Finnish Translation (contributed by Jyri-Petteri Paloposki)
diff --git a/rpm/harbour-sailotp.yaml b/rpm/harbour-sailotp.yaml
index 85ff0a5..a786b0e 100644
--- a/rpm/harbour-sailotp.yaml
+++ b/rpm/harbour-sailotp.yaml
@@ -1,6 +1,6 @@
Name: harbour-sailotp
Summary: SailOTP
-Version: 1.9.0
+Version: 1.9.1
Release: 1
Group: Security
URL: https://github.com/seiichiro0185/sailotp/
diff --git a/translations/harbour-sailotp-de.ts b/translations/harbour-sailotp-de.ts
index 2dcc3d4..83721ef 100644
--- a/translations/harbour-sailotp-de.ts
+++ b/translations/harbour-sailotp-de.ts
@@ -4,36 +4,62 @@
About
-
-
- Ein einfacher Sailfish OTP-Generator
-(RFC 6238/4226-kompatibel)
+
+
+ Ein einfacher Sailfish OTP Generator
-
-
- Copyright: Stefan Brand
-Lizenz: BSD (3-Klausel)
+
+
+ (RFC 6238/4226 kompatibel)
-
+
+
+ Onlinehilfe
+
+
+
+
+ Sourcecode & Bugtracker
+
+
+
+
+ Copyright
+
+
+
+
+ Lizenz
+
+
+
+
+ BSD (3-Klausel)
+
+
+
+
+ Steamguard-Unterstützung
+
+
+
+
+ Suche
+
+
+
SailOTP verwendet folgende externe Bibliotheken:
-
+
Mitwirkende:
-
-
- Unterstützung
-
-
-
+
Übersetzer:
@@ -281,54 +307,54 @@ Lizenz: BSD (3-Klausel)
Nach unten ziehen zum Hinzufügen
-
+
Suchen
-
+
Lösche
-
-
+
+
Token für
-
-
+
+
in die Zwischenablage kopiert
-
+
In die Zwischenablage
-
+
Als QR-Code Zeigen
-
+
Nach oben
-
+
Nach unten
-
+
Bearbeiten
-
+
Löschen
diff --git a/translations/harbour-sailotp-es.ts b/translations/harbour-sailotp-es.ts
index 2010a29..7b5533c 100644
--- a/translations/harbour-sailotp-es.ts
+++ b/translations/harbour-sailotp-es.ts
@@ -4,36 +4,62 @@
About
-
-
- Un sencillo generador de códigos OTP
-(Compatible con RFC 6238/4226)
+
+
+
-
-
- Derechos de autor: Stefan Brand
-Licencia: BSD (de 3 cláusulas)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SailOTP usa las siguientes librerías de terceros:
-
+
Contribuidor:
-
-
- soporte
-
-
-
+
Traductores:
@@ -281,54 +307,54 @@ Licencia: BSD (de 3 cláusulas)
Tire hacia abajo para añadir tokens OTP
-
+
-
+
Borrando
-
-
+
+
Token para
-
-
+
+
copiado al portapapeles
-
+
Copiar al portapapeles
-
+
Mostrar código QR
-
+
Ascender
-
+
Descender
-
+
Editar
-
+
Borrar
diff --git a/translations/harbour-sailotp-fi.ts b/translations/harbour-sailotp-fi.ts
index 2556d2e..9fc4f59 100644
--- a/translations/harbour-sailotp-fi.ts
+++ b/translations/harbour-sailotp-fi.ts
@@ -4,36 +4,62 @@
About
-
-
- Yksinkertainen OTP- eli kertasalasanasovellus Sailfishille
-(RFC 6238-/4226-yhteensopiva)
+
+
+ Ohje verkossa
-
-
- Copyright: Stefan Brand
-Lisenssi: BSD (3 lausekkeen)
+
+
+ Lähdekoodi ja virheilmoitukset
-
-
- SailOTP käyttää seuraavia kolmannen osapuolen kirjastoja:
+
+
+ Tekijänoikeus
-
+
+
+ Lisenssi
+
+
+
+
+ BSD (3 lauseen)
+
+
+
Projektiin osallistuneet:
-
-
- Tuki
+
+
+ SteamGuard-tuki
-
+
+
+ Etsi
+
+
+
+
+ SailOTP käyttää seuraavia kolmannen osapuolen kirjastoja:
+
+
+
+
+ Yksinkertainen OTP- eli kertasalasanasovellus Sailfishille
+
+
+
+
+ (RFC 6238/4226 -yhteensopiva)
+
+
+
Kääntäjät:
@@ -281,54 +307,54 @@ Lisenssi: BSD (3 lausekkeen)
Vedä alaspäin lisätäksesi kertasalasanatunnuksen
-
+
-
+ Etsi
-
+
Poistetaan
-
-
+
+
Kertasalasana palveluun
-
-
+
+
on kopioitu leikepöydälle
-
+
Kopioi leikepöydälle
-
+
Näytä kertasalasana QR-koodina
-
+
Siirrä ylöspäin
-
+
Siirrä alaspäin
-
+
Muokkaa
-
+
Poista
diff --git a/translations/harbour-sailotp-fr.ts b/translations/harbour-sailotp-fr.ts
index 469af15..54c6b6f 100644
--- a/translations/harbour-sailotp-fr.ts
+++ b/translations/harbour-sailotp-fr.ts
@@ -4,35 +4,62 @@
About
-
-
- Un générateur d'OTP simple pour Sailfish (compatible avec les RFC6238 et 4226)
+
+
+
-
-
- Copyright: Stefan Brand
-Licence : BSD (3 clauses)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SailOTP utilise les bibliothèques tierces suivantes :
-
+
Contributeurs :
-
-
- Support
-
-
-
+
Traducteurs :
@@ -281,54 +308,54 @@ Licence : BSD (3 clauses)
Glissez vers le bas pour ajouter un OTP
-
+
-
+
Suppression
-
-
+
+
OTP pour
-
-
+
+
copié dans le presse-papier
-
+
Copier dans le presse-papier
-
+
Afficher le code QR
-
+
Déplacer vers le haut
-
+
Déplacer vers le bas
-
+
Modifier
-
+
Supprimer
diff --git a/translations/harbour-sailotp-it.ts b/translations/harbour-sailotp-it.ts
index 8989250..3a95f51 100644
--- a/translations/harbour-sailotp-it.ts
+++ b/translations/harbour-sailotp-it.ts
@@ -4,36 +4,62 @@
About
-
-
- Un semplice generatore di OTP per Sailfish
-(compatibile con RFC 6238/4226)
+
+
+
-
-
- Copyright: Stefan Brand
-Licenza: BSD (3-clause)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SailOTP utilizza le seguenti librerie di terzi:
-
+
Collaboratori:
-
-
- Supporto
-
-
-
+
Traduttori:
@@ -281,54 +307,54 @@ Licenza: BSD (3-clause)
Trascina giù per aggiungere una OTP
-
+
-
+
Cancellazione
-
-
+
+
Token per
-
-
+
+
copiato negli appunti
-
+
Copia negli appunti
-
+
Mostra Codice QR
-
+
>Sposta su
-
+
Sposta giù
-
+
Modifica
-
+
Cancella
diff --git a/translations/harbour-sailotp-nl.ts b/translations/harbour-sailotp-nl.ts
index 79d26cb..c9114d3 100644
--- a/translations/harbour-sailotp-nl.ts
+++ b/translations/harbour-sailotp-nl.ts
@@ -4,36 +4,62 @@
About
-
-
- Een simple Sailfish OTP generator
-(RFC 6238/4226 compatible)
+
+
+
-
-
- Auteursrechten: Stefan Brand
-Licentie: BSD (3-clause)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SailOTP gebruikt de volgende bibliotheken van derden:
-
+
Bijdragers:
-
-
- Ondersteuning
-
-
-
+
Vertalers:
@@ -281,54 +307,54 @@ Licentie: BSD (3-clause)
Veeg naar beneden om een OTP toe te voegen
-
+
-
+
Wissen
-
-
+
+
Token voor
-
-
+
+
gekopieerd naar het klembord
-
+
Kopieer naar klembord
-
+
Geeft token als QR-code weer
-
+
Verplaats naar boven
-
+
Verplaats naar beneden
-
+
Wijzig
-
+
Verwijder
diff --git a/translations/harbour-sailotp-pt_BR.ts b/translations/harbour-sailotp-pt_BR.ts
index b713be2..f4095ff 100644
--- a/translations/harbour-sailotp-pt_BR.ts
+++ b/translations/harbour-sailotp-pt_BR.ts
@@ -4,35 +4,62 @@
About
-
-
- Um Simples Gerador de OTP para Sailfish
+
+
+
-
-
- Copyright: Stefan Brand
-Licença: BSD (3-clause)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SailOTP usa as seguintes bibliotecas de terceiros
-
+
Contribuiram:
-
-
- Suporte
-
-
-
+
Tradutores:
@@ -280,54 +307,54 @@ Licença: BSD (3-clause)
Puxe para baixo para adicionar um OTP
-
+
-
+
Apagando
-
-
+
+
Token para
-
-
+
+
copiado para a área de transferência
-
+
Copiar para área de transferência
-
+
Mostrar código QR
-
+
Mover para cima
-
+
Mover para baixo
-
+
Editar
-
+
Apagar
diff --git a/translations/harbour-sailotp-ru.ts b/translations/harbour-sailotp-ru.ts
index 294e6c4..8eea636 100644
--- a/translations/harbour-sailotp-ru.ts
+++ b/translations/harbour-sailotp-ru.ts
@@ -4,36 +4,62 @@
About
-
-
- Простой генератор OTP для Sailfish
-(совместим с RFS 6238/4226)
+
+
+
-
-
- Авторские права: Стефан Брэнд
-Лицензия: BSD (3-clause)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SailOTP использует следующие сторонние библиотеки:
-
+
Участники:
-
-
- Поддержка
-
-
-
+
Переводчики:
@@ -282,54 +308,54 @@ License: BSD (3-clause)
Потяните вниз чтобы добавить OTP
-
+
-
+
Удаление
-
-
+
+
Токен для
-
-
+
+
скопирован в буфер обмена
-
+
Скопировать в буфер обмена
-
+
Показать QR-код
-
+
Передвинуть вниз
-
+
Передвинуть вверх
-
+
Редактировать
-
+
Удалить
diff --git a/translations/harbour-sailotp-sv.ts b/translations/harbour-sailotp-sv.ts
index b14c6c2..44a8d52 100644
--- a/translations/harbour-sailotp-sv.ts
+++ b/translations/harbour-sailotp-sv.ts
@@ -4,36 +4,62 @@
About
-
-
- En enkel Sailfish OTP-generator
-(RFC 6238/4226-kompatibel)
+
+
+
-
-
- Copyright: Stefan Brand
-Licens: BSD (3-clause)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sök
+
+
+
SailOTP använder följande tredjeparts bibliotek:
-
+
Medarbetare:
-
-
- Support
-
-
-
+
Översättare:
@@ -281,54 +307,54 @@ Licens: BSD (3-clause)
Dra neråt för att lägga till en OTP
-
+
-
+ Sök
-
+
Tar bort
-
-
+
+
Token för
-
-
+
+
kopierad till urklipp
-
+
Kopiera till Urklipp
-
+
Visa token som QR-kod
-
+
Flytta upp
-
+
Flytta ner
-
+
Redigera
-
+
Ta bort
diff --git a/translations/harbour-sailotp-zh_CN.ts b/translations/harbour-sailotp-zh_CN.ts
index e607888..f3d29ce 100644
--- a/translations/harbour-sailotp-zh_CN.ts
+++ b/translations/harbour-sailotp-zh_CN.ts
@@ -4,35 +4,62 @@
About
-
-
- 一个简单的旗鱼OTP生成器<br/>(RFC 6238/4226 兼容)
+
+
+
-
-
- 版权所有:Stefan Brand
-许可证: BSD (3-clause)
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SailOTP使用下面的第三方库:
-
+
贡献者:
-
-
- 支持
-
-
-
+
翻译:
@@ -280,54 +307,54 @@ License: BSD (3-clause)
下拉添加一个OTP
-
+
-
+
删除中
-
-
+
+
令牌
-
-
+
+
已复制到剪切板
-
+
复制到剪贴板
-
+
显示二维码
-
+
向上
-
+
向下
-
+
编辑
-
+
删除
diff --git a/translations/harbour-sailotp.ts b/translations/harbour-sailotp.ts
index e099db7..7af6cf8 100644
--- a/translations/harbour-sailotp.ts
+++ b/translations/harbour-sailotp.ts
@@ -4,34 +4,62 @@
About
-
-
-
+
+
+
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- Contributor:
+
+
+
-
-
- support
+
+
+
-
+
Translators:
@@ -279,54 +307,54 @@ License: BSD (3-clause)
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+