Commit graph

809 commits

Author SHA1 Message Date
Harsh Shandilya
cdf45bc323
Add setting to save OpenKeychain auth keyid (#554)
* Add setting to save OpenKeychain auth keyid

* Hide pref not disable

Co-Authored-By: Reagan Sanders <vexofp@gmail.com>
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-27 00:14:42 +05:30
Harsh Shandilya
2fcec8685b
Update dependencies
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-24 12:25:01 +05:30
Harsh Shandilya
7a80be7732
treewide: Fix typo in license header
While we're here, also clarify we're strictly GPL-3.0 and not automatically
opting into future revisions of the license.

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-02 20:10:07 +05:30
Harsh Shandilya
ee3535482a
treewide: Add copyrights
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-02 18:11:22 +05:30
Harsh Shandilya
f1f59dc1ed
Add Spotless to regulate codestyle (#550)
* Add Spotless to regulate codestyle

* treewide: Run spotless

* Add spotlessCheck to CI test

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-02 18:04:18 +05:30
Harsh Shandilya
9a1a54a6fc
Initial biometric authentication support (#541)
* [WIP] Initial biometric authentication support

* Redirect decryption app shortcut to go through LaunchActivity

* UserPreference: Clear existing shortcuts when toggling password auth

Clears out any auth-bypassed entries that exist

* Fix hilarious copypasta derp

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-02 11:00:45 +05:30
Harsh Shandilya
073346c157
Redesign UI and introduce dark theme (#519)
Caveats:

- The openpgp preference had to be removed because the open-intents developers are too lazy to update their libraries. Over the coming weeks I will be reimplementing a local solution for this instead.

- The autofill dialog is broken but I since it is being worked on in #410 already I'm not going to bother fixing it.
2019-10-01 22:14:28 +05:30
Harsh Shandilya
c9dc4034f1
pwgen: Cleanup some variable declarations
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-10-01 20:54:04 +05:30
Alex Burka
4169af453b don't update nonexistent progress bar (#549) 2019-09-30 10:28:20 +05:30
Harsh Shandilya
77af0669ed
Reformat
[skip travis]

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-09-15 05:16:59 +05:30
Alex Burka
367e55de3c add save-and-copy button (#537) 2019-09-14 13:18:18 +05:30
zeapo
7062156b1a version bump 2019-09-09 21:22:06 +02:00
Harsh Shandilya
0516e3153f
Uprev dependencies
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-09-08 22:03:24 +05:30
Harsh Shandilya
9882680826
Bump recyclerview from 1.1.0-beta01 to 1.1.0-beta02
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-08-11 11:06:24 +05:30
Harsh Shandilya
682e8a5715
Add explicit documentfile dependency
We were previously depending on it transitively coming into
the dependency graph but AndroidX artifacts are increasingly
getting rid of transitive deps so let's start being explicit about
our dependencies.

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-08-03 13:32:48 +05:30
Harsh Shandilya
cc4b3ebd64
Bump commons-codec from 1.12 to 1.13
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-08-03 13:28:54 +05:30
Harsh Shandilya
867f352691
Bump material from 1.1.0-alpha08 to 1.1.0-alpha09
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-08-03 13:28:54 +05:30
Harsh Shandilya
be206d796d
treewide: Remove more useless log prints
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-30 06:33:57 +05:30
Harsh Shandilya
5ce19cd92d
Ensure git commit time doesn't overflow
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-30 06:27:19 +05:30
Harsh Shandilya
36b0a41578
Ensure we always have valid timestamps
Non-git repositories deserve love too!

Fixes #530

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-30 06:24:06 +05:30
Harsh Shandilya
c635704032
PasswordStore: Remove useless log prints
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-30 06:20:36 +05:30
Harsh Shandilya
d583609b28
AutofillFragment: Explicitly declare type
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-30 06:15:56 +05:30
Harsh Shandilya
80c397ef7b
treewide: Reformat
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-30 05:59:10 +05:30
Harsh Shandilya
baf82943cf
Switch to androidx preference manager
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-28 12:09:29 +05:30
Harsh Shandilya
499c4ef460
Configure compiler options
Enable Kotlin 1.3.41's new type inference
Warn about deprecated methods in Java

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-28 12:09:29 +05:30
Harsh Shandilya
1fd5f202b0
Fix compile errors
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-28 12:07:42 +05:30
Harsh Shandilya
5fe2c74cc7
Target Android Q
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-28 12:07:36 +05:30
Harsh Shandilya
699007c53b
PasswordStore: Clear some lint warnings and deprecated API
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-28 12:07:04 +05:30
xPMo
eaeeaf4115 Fix typo in username toast (#525) 2019-07-22 03:24:32 +05:30
Harsh Shandilya
0889cbe7d2
Dependency upgrades
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-16 18:33:13 +05:30
Harsh Shandilya
27377c284f
proguard: Fix SearchView FQCN
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-16 18:24:07 +05:30
Harsh Shandilya
54d2c04cc1
Add missing super calls
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-05 15:58:27 +05:30
Harsh Shandilya
c6363dc86d
AutofillFragment: Repair semantics for newest AppCompat changes
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-05 15:23:15 +05:30
Harsh Shandilya
4207bfe2de
Uprev all dependencies
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-07-04 12:47:24 +05:30
Miles Breslin
2e8fe06b2b Allow alternate totp format (#523)
Fixes #495
2019-07-04 12:44:47 +05:30
Harsh Shandilya
56e53d36fd
GitAsyncTask: Acquire WeakReference of activity to prevent context leaks
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 13:26:56 +05:30
Harsh Shandilya
68d20c5f2f
Convert Git and SSH config factories to Kotlin
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 13:23:37 +05:30
Harsh Shandilya
f05c0b37ca
GitActivity: Cleanup obvious code smells
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 13:15:47 +05:30
Harsh Shandilya
168c3d42aa
Convert GitOperation API and implementations to Kotlin
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 13:15:29 +05:30
Harsh Shandilya
daafc01ce2
Otp: Remove string concatenation from calculation hot path
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 12:57:39 +05:30
Harsh Shandilya
30b6d2346a
Fix instrumentation tests
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 12:57:18 +05:30
Harsh Shandilya
8c0bce3e98
treewide: Resolve layout warnings
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 12:47:07 +05:30
Harsh Shandilya
75a595f07f
Dependency updates
Mockito 2.28.2
AndroidX Test 1.2.0
AndroidX Espresso 3.2.0
AGP 3.4.1

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-31 12:27:48 +05:30
Harsh Shandilya
53b42905f1
Convert autofill package to Kotlin (#515)
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-29 00:42:09 +05:30
Harsh Shandilya
321035c319
Simplify password row layout and resolve icon tints
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-26 14:56:43 +05:30
Emmanuel Corrales
c46f50f86f Added a "SHOW EXTRA CONTENT" button under the "SHOW PASSWORD" button. (#510)
* Add 'SHOW EXTRA CONTENT' button.

* Show the extra content after clicking the 'SHOW EXTRA CONTENT' button.

* Change the regular button to a toggle button and add text for hiding extra contents.

* Change the implementaton of showing/hiding extra contents to accomodate using a toggle button.

* Add padding to the top of the button.
2019-05-26 14:54:16 +05:30
Harsh Shandilya
b06420eb83
Improve nullability coverage (#514)
* Switch to in-built RV divider

* Switch getActivity calls to requireActivity

This enforces non-null activity and throws a proper exception when it is
null for some reason.

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-26 12:40:03 +05:30
Harsh Shandilya
5078da4490
Vectorize drawables (#516)
All icons were sourced from material.io/icons

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-25 22:32:30 +05:30
zeapo
bca66a12e9 a signed build 2019-05-25 10:51:19 +02:00
Bastian Köcher
055cacdd91 Fix finding Otp digits (#511)
If no `digits` was present, this function failed with a
`NullPointerException`.
2019-05-16 13:19:18 +05:30
Mohamed Zenadi
064a3fad99
Allow the user to push local master to a new branch in case of conflict (#508)
* detect that we're in a detached head and show the message

* add a new way to clean local repo in case of failed rebase
2019-05-15 11:22:07 +02:00
Harsh Shandilya
127a8b8c8a
Update mockito and fix dependency updates task
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-05-01 17:03:58 +05:30
Harsh Shandilya
00e2cf352f
PasswordStore: Resolve some IDE warnings
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-04-25 09:18:31 +05:30
Hussein Al Abry
e54010906f Use storage access framework (#469)
* use storage access framework

* UserPreference: Add back warning about using SDCard root directory

* UserPreference: Fix IDE warnings

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-04-25 09:11:32 +05:30
vexofp
f272e4dde2 Authentication using OpenKeystore SSH API (#486)
* Implemented OpenKeystore SSH API as a new authentication option

* Fix formatting problems

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* Addressed review comments.

Removed leftover debugging code.
Wrapped excessively long lines.
Added missing new parameter to Javadoc.

* Merge remote-tracking branch 'upstream/master' into gpg-ssh-key
2019-04-06 00:14:38 +02:00
Harsh Shandilya
94bf103b33
Merge pull request #491 from igaryhe/master
Read OTP digits, algorithm, period from URI, support Steam Guard
2019-03-19 20:34:41 +05:30
Dan Ho
2ca59d95f9 fixed accidental newlines 2019-03-15 23:19:49 +08:00
Dan Ho
9137dadcbd minor spelling mistake fix 2019-03-15 22:49:14 +08:00
Dan Ho
f5139320db break several lines to limit the line length 2019-03-15 22:20:30 +08:00
Harsh Shandilya
cb47792ae6
Dependency updates
Mockito core 2.25.0
AGP 3.3.2

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-03-15 18:33:51 +05:30
Dan Ho
b2eb150c0f Read OTP digits, algorithm, period from uri, support Steam Guard 2019-03-14 08:16:24 +08:00
Harsh Shandilya
6d909abde8
Switch to kotlin jdk8 stdlib
We're targetting Java version 1.8 so reflect that change
here too.

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-03-03 12:51:09 +05:30
Harsh Shandilya
ffe489c293 Dependency updates (#489)
* Configure dependencyUpdates task

Configured to emit JSON reports in build directory and to
only use stable releases.

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* Update dependencies

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-03-02 19:08:57 +01:00
Harsh Shandilya
3c06063153 Rewrite Gradle configuration with Kotlin DSL (#488)
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-03-02 18:05:51 +01:00
rk0n
0b6ba542a8 Fix clear clipboard 20 times history (#465) (#487) 2019-02-28 20:15:35 +01:00
Harsh Shandilya
88c84e4400 [ImgBot] Optimize images (#485)
*Total -- 32.98kb -> 20.64kb (37.43%)

/app/src/main/res/drawable-xxxhdpi/ic_content_copy.png -- 1.30kb -> 0.61kb (52.75%)
/app/src/main/res/drawable-nodpi/autofill_ins_2.png -- 6.69kb -> 3.97kb (40.69%)
/app/src/main/res/drawable-nodpi/autofill_ins_1.png -- 11.65kb -> 7.15kb (38.61%)
/app/src/main/res/drawable-nodpi/autofill_ins_3.png -- 10.47kb -> 6.48kb (38.18%)
/app/src/main/res/drawable-xxhdpi/ic_content_copy.png -- 0.80kb -> 0.50kb (37.76%)
/app/src/main/res/drawable-xhdpi/ic_content_copy.png -- 0.55kb -> 0.47kb (13.73%)
/app/src/main/res/drawable-xxhdpi/ic_action_secure.png -- 0.61kb -> 0.57kb (7.21%)
/app/src/main/res/drawable-hdpi/ic_content_copy.png -- 0.41kb -> 0.40kb (2.84%)
/app/src/main/res/drawable-xhdpi/ic_action_secure.png -- 0.50kb -> 0.49kb (1.37%)
2019-02-21 22:43:51 +01:00
Harsh Shandilya
86696c668c Convert PasswordEntry to Kotlin (#477)
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-02-03 12:24:15 +01:00
reroman
a819343c74 Allow to create passwords without lowercase letters. (#478)
* Clipboard now is cleared after manual copy

* Spanish translation added

* Spanish translations for commit messages updated

* Now can generate passwords free of lowercase (for example only numbers, uppercase or symbols)

Also it makes sure that uppercase is included when the generated char is ambiguous and discarded
2019-02-03 12:22:12 +01:00
reroman
723a40a216 Clipboard now is cleared with manual copy (#464)
* Clipboard now is cleared after manual copy

* Spanish translation added

* Spanish translations for commit messages updated

* Validation of value 0 in general_show_time before start timer

The clear_after_copy preference is disabled according with that value.

* Like clear_after_copy, clear_clipboard_20x now depends on the value of general_show_time too
2019-01-13 23:13:11 +00:00
Harsh Shandilya
d09de8bbf5 Suppress lint warning (#475)
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-01-13 23:11:25 +00:00
Timo Loewe
bedda61088 Use different colors for debug app icon (#472) 2019-01-12 13:56:29 +00:00
Timo Loewe
2a921aec65 Fix autofill preference referencing hard-coded application id (#473) 2019-01-12 13:54:54 +00:00
Timo Loewe
094c6da53e Enable parallel installation of release and debug builds (#471)
* Specify applicationIdSuffix for debug build type

This allows installing debug and release versions of the app
alongside each other.

* Get rid of obsolete repository declaration in app/build.gradle
2019-01-06 16:32:32 +01:00
Harsh Shandilya
f34ce30cc7 GitOperation: Dismiss activity on cancel (#468)
Fixes the issue where starting a repository sync and then
hitting cancel in the password dialog leaves you with an empty activity
which needs to be dismissed to get back to where you were.

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-01-03 10:54:45 +00:00
حسين
249248e168
improve translations with format strings
delete dialog format string

dialog text format
2019-01-02 19:18:18 +00:00
Harsh Shandilya
c200566bca Bump minSdk to 21 (#466)
* Bump minSdk to 21

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* PasswordGenerator: Constify things

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* Deprecate PRNG fixes

The problem being fixed doesn't exist on SDK 21 and above.

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* treewide: Switch to lambdas

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* treewide: Formatting fixes

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* treewide: Remove useless casts and add missing annotations

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-01-02 17:14:52 +00:00
حسين
06a7d79260
set untranslateable strings 2019-01-02 14:30:11 +00:00
Harsh Shandilya
b267321d54 Rewrite pwgen package in Kotlin (#463)
* Rename classes to not be ugly as all hell

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* PgpActivity: Cleanup

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* Rewrite pwgen package in Kotlin

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* PRNGFixes: Remove constant conditions

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-01-02 15:00:33 +01:00
حسين
a82fb391d3
move strings in PasswordStore.java 2019-01-01 21:47:17 +00:00
حسين
38cebb56be
fix potential NPE when getting last changed timestamp. 2019-01-01 16:29:05 +00:00
Ricardo Román
e58a5e73d6
Spanish translation added 2019-01-01 14:40:41 +00:00
حسين
054056fa22
alert user when password is being overridden 2018-12-25 21:35:08 +00:00
حسين
9496ed31fd
opt out of google drive app backup 2018-12-25 20:46:01 +00:00
حسين
81aff5d870
Commit messages (#455)
* use full password path in add/edit git commit message

* commit strings are format strings

* use format strings in other languages

* use move/rename commit message
2018-12-25 14:39:32 +00:00
oleg-fiksel
62954ee78f bump version (#459) 2018-12-23 16:34:29 +00:00
maximemenager
041e728137 Improve french translation (#456) 2018-12-01 11:22:52 +00:00
Harsh Shandilya
0d55f71ff5 Additional fixes (#449)
* Convert ToCloneOrNot to Kotlin

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* Cleanup and fix memory leak in SshKeyGen

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* Fix manifest issues

- Indent with 4 spaces
- Fix typo'd meta-data values

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>

* travis: Install build tools 28.0.3

Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2018-11-22 10:50:40 +00:00
حسين
e72038f6f1
extra field is multi-line 2018-10-25 12:03:58 +01:00
حسين
0382716c5e
bump version 2018-10-18 00:28:25 +01:00
حسين
85df10af04
set default sort order
resolves #437
2018-10-17 21:09:32 +01:00
حسين
88721f5905
bump version number
new versionCode format:
    1  - major version
    03 - minor version
    00 - revision
2018-10-16 13:38:31 +01:00
حسين
01df4371db
wrapping of long passwords
resolves #360
2018-10-12 17:01:08 +01:00
Hussein Mohammed
0b9eeb27e7
use visible password field
resolves #366.
2018-10-12 15:26:49 +01:00
Harsh Shandilya
483e8d9310 Migrate to AndroidX (#430)
* Update gradle and external dependencies

- Switch away from deprecated compile directive
- Remove explicit buildToolsVersion, is defined by the gradle plugin now
- Fix build in SelectFolderActivity

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* Upgrade gradle plugin and wrapper to latest alpha

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* Don't use alpha gradle plugin

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* Migrate to AndroidX

https://developer.android.com/jetpack/androidx/

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* Upgrade AndroidX dependencies to stable release

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* Enable Jetifier

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* SelectFolderFragment: Fix build

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>
2018-10-12 15:06:04 +01:00
Harsh Shandilya
b8c5dd85a6 treewide: Cleanup relevant build warnings (#433)
Signed-off-by: Harsh Shandilya <harsh@prjkt.io>
2018-10-12 10:09:06 +02:00
Markus Gräb
8e9c2363bb Main view: open search view on keyboard press (#432) 2018-10-11 18:41:35 +01:00
setine
2002e98c17 Cancel running DelayShow async tasks (#416) (#431)
These tasks were filling up the threadpool slots and leading
to delays in executing further AsyncTasks after a while.
2018-10-11 18:13:03 +02:00
Harsh Shandilya
8ff0039be4 Update gradle and external dependencies (#429)
* Update gradle and external dependencies

- Switch away from deprecated compile directive
- Remove explicit buildToolsVersion, is defined by the gradle plugin now
- Fix build in SelectFolderActivity

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* Upgrade gradle plugin and wrapper to latest alpha

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>

* Don't use alpha gradle plugin

Signed-off-by: Harsh Shandilya <harsh@prjkt.io>
2018-10-11 16:39:45 +01:00
Joakim Lundborg
e1dfbd0c99 Clean paths (#425)
* Clean path display
This removes slashes from end of directories in the label, and the start
and end slash of the item headline.

* Item icon alignment
Change icon alignment to bottom, which makes the display look cleaner
when there is no path.
2018-09-25 19:54:06 +01:00
Joel Beckmeyer
eea0e68dda Display HOTP code if password contains HOTP secret, unify HOTP and TOTP code (#413)
* Display HOTP code if password contains HOTP secret, unify HOTP and TOTP code

* Add ability to show HOTP instead of showing every decrypt

* Fix off by 1 error

* fix return intent logic so that edits and HOTP increments are properly committed

* fix linting errors

* Fix broken logic for case when a password is created

* add ability to choose if password entry will be updated on HOTP code calculation
2018-09-25 18:45:54 +01:00