Commit Graph

7301 Commits

Author SHA1 Message Date
Tobias Groza cafc64534b
Merge pull request #5458 from Stypox/fix-popup-x
Fix popup closing x button animation
2021-01-22 10:01:12 +01:00
Stypox 327fc742d3
Fix channel subscribe button causing crash in main page tab
The binding was being set to null on onDestroyView() instead of in onDestroy()
2021-01-21 15:31:50 +01:00
Stypox 10ec67854e
Fix number being shown instead of corresponding string resorce in feed 2021-01-20 10:44:44 +01:00
Stypox e327f7ba2c
Fix popup closing x button animation 2021-01-19 09:34:21 +01:00
TiA4f8R 9a65f02d5b
Fix crash when no browser is present and use an ACTION_CHOOSER intent in the app update notification (#5429)
Fix crash when no browser is present and use an ACTION_CHOOSER intent for app update notification
Show a Toast when no app is present on user's device to open a content in an app and in a browser and use an ACTION_CHOOSER intent with the ACTION_VIEW intent put as an extra intent in the update notification.
2021-01-18 21:45:36 +01:00
TobiGr 5e7c2c11f6 Update translations
Translated using Weblate (Kabyle)
Currently translated at 2.3% (1 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/kab/

Translated using Weblate (Polish)

Currently translated at 99.5% (613 of 616 strings)

Translated using Weblate (German)

Currently translated at 99.8% (615 of 616 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Arabic)

Currently translated at 96.9% (597 of 616 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.6% (614 of 616 strings)

Translated using Weblate (Polish)

Currently translated at 99.6% (614 of 616 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Sardinian)

Currently translated at 99.0% (610 of 616 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 27.9% (12 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/

Translated using Weblate (Basque)

Currently translated at 30.2% (13 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eu/

Translated using Weblate (Czech)

Currently translated at 6.9% (3 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/

Translated using Weblate (Hebrew)

Currently translated at 32.5% (14 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/

Translated using Weblate (Polish)

Currently translated at 53.4% (23 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (German)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (French)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 96.2% (593 of 616 strings)

Translated using Weblate (French)

Currently translated at 72.0% (31 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/

Translated using Weblate (Chinese (Traditional))

Currently translated at 81.3% (35 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/

Translated using Weblate (English (United Kingdom))

Currently translated at 6.6% (41 of 616 strings)

Translated using Weblate (Spanish)

Currently translated at 99.1% (611 of 616 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Arabic)

Currently translated at 97.8% (603 of 616 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Finnish)

Currently translated at 99.5% (613 of 616 strings)

Translated using Weblate (Dutch (Belgium))

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Tamil)

Currently translated at 2.3% (1 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ta/

Translated using Weblate (Italian)

Currently translated at 46.5% (20 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 79.0% (34 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Korean)

Currently translated at 85.3% (526 of 616 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Serbian)

Currently translated at 40.9% (252 of 616 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Romanian)

Currently translated at 74.3% (458 of 616 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (German)

Currently translated at 48.8% (21 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/

Translated using Weblate (Catalan)

Currently translated at 4.6% (2 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ca/

Translated using Weblate (Arabic)

Currently translated at 67.4% (29 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/

Translated using Weblate (Indonesian)

Currently translated at 13.9% (6 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/

Translated using Weblate (Chinese (Simplified))

Currently translated at 86.0% (37 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Finnish)

Currently translated at 99.6% (614 of 616 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 96.4% (594 of 616 strings)

Translated using Weblate (German)

Currently translated at 46.5% (20 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/

Translated using Weblate (Turkish)

Currently translated at 27.9% (12 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tr/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 18.6% (8 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nb_NO/

Translated using Weblate (Santali)

Currently translated at 12.3% (76 of 616 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 95.9% (591 of 616 strings)

Translated using Weblate (Bengali)

Currently translated at 78.5% (484 of 616 strings)

Translated using Weblate (German)

Currently translated at 51.1% (22 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/

Translated using Weblate (German)

Currently translated at 51.1% (22 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/

Translated using Weblate (Greek)

Currently translated at 32.5% (14 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/el/

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)

Translated using Weblate (Estonian)

Currently translated at 68.9% (425 of 616 strings)

Translated using Weblate (Kabyle)

Currently translated at 30.0% (185 of 616 strings)

Translated using Weblate (Estonian)

Currently translated at 4.6% (2 of 43 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/et/

Translated using Weblate (Somali)

Currently translated at 100.0% (616 of 616 strings)
2021-01-18 13:31:36 +01:00
TobiGr 053b6ab8c6 Update extractor version 2021-01-18 13:10:04 +01:00
XiangRongLin 5814743d59
Merge pull request #5430 from Stypox/fix-feed
Fix reload feed button does nothing
2021-01-18 12:59:58 +01:00
Stypox fa7613b8d1
Refactor feed fragment 2021-01-18 11:43:05 +01:00
Stypox d3d05d613d
Fix reload feed button does nothing
initListeners was being called before the bindings were assigned, and therefore the click listener was never setup
2021-01-18 11:42:25 +01:00
XiangRongLin 23b5cd5b72
Merge pull request #5442 from Stypox/fix-close-popup
Prevent IllegalArgumentException when closing popup
2021-01-18 09:39:02 +01:00
Stypox d4a33603ab
Prevent IllegalArgumentException when closing popup 2021-01-18 08:27:49 +01:00
Stypox 3868243c2a
Animate secondary controls toggle 2021-01-17 15:59:29 +01:00
Stypox 243f539439
Use KoreUtil function 2021-01-17 15:46:00 +01:00
Stypox 71d92c8d1b
Hide tab layout in detail fragment when there is no space 2021-01-17 15:42:54 +01:00
Stypox e840d42fb9
Add content description to detail fragment tabs 2021-01-17 15:38:12 +01:00
Stypox 750c4ffbd3
Add preference to hide description tab in video details 2021-01-17 15:36:42 +01:00
Stypox d043a4f410
Always show tab layout at the bottom of the screen 2021-01-17 15:36:42 +01:00
Stypox 4c3ba0fe3d
Add icons to VideoDetailFragment tab layout for better accessibility 2021-01-17 15:34:24 +01:00
Stypox a314f55a17
Move description to a tab alongside related streams and comments 2021-01-17 15:26:25 +01:00
Stypox 78a9811fe3
Add a secondary control panel to video detail fragment
It is shown when the user expands the description
It contains share, open in browser and play in kodi
2021-01-17 15:12:29 +01:00
Isira Seneviratne fe92abde0e Use view binding in VideoDetailFragment. 2021-01-17 09:57:40 +05:30
Isira Seneviratne 01396923f1 Use the base Groupie library in ChannelItem. 2021-01-16 18:59:49 +05:30
Isira Seneviratne e0de66b1be Fix some issues. 2021-01-16 18:59:48 +05:30
Isira Seneviratne 77675b361f Use BindableItem in PickerSubscriptionItem. 2021-01-16 18:59:45 +05:30
Isira Seneviratne e2dd058430 Use BindableItem in PickerIconItem. 2021-01-16 18:55:42 +05:30
Isira Seneviratne a188125982 Use BindableItem in HeaderWithMenuItem. 2021-01-16 18:55:42 +05:30
Isira Seneviratne 9e5f079cf2 Use BindableItem in HeaderItem. 2021-01-16 18:55:41 +05:30
Isira Seneviratne 51a948bfcf Use BindableItem in FeedImportExportItem. 2021-01-16 18:55:41 +05:30
Isira Seneviratne 9d27d49c1f Use BindableItem in FeedGroupReorderItem. 2021-01-16 18:55:41 +05:30
Isira Seneviratne 761f6568fa Use BindableItem in FeedGroupCarouselItem. 2021-01-16 18:55:40 +05:30
Isira Seneviratne ee94b296ae Use BindableItem in FeedGroupCardItem. 2021-01-16 18:55:40 +05:30
Isira Seneviratne b387946d34 Use BindableItem in FeedGroupAddItem. 2021-01-16 18:55:39 +05:30
Isira Seneviratne 46afe5153f Use BindableItem in EmptyPlaceholderItem. 2021-01-16 18:55:38 +05:30
Isira Seneviratne 68be87724a Switch to Groupie view binding module. 2021-01-16 18:55:38 +05:30
Stypox 594f0b10ba
Move TextLinkifier computation out of main thread 2021-01-16 13:23:42 +01:00
TiA4f8R 79e98db3bd
Apply the requested changes and little improvements
Apply the requested changes, use ShareUtils.shareText to share an stream in the play queue and optimize imports for Java files, using Android Studio functionality.

Apply the requested changes and do little improvements
Apply the requested changes, use ShareUtils.shareText to share an stream in the play queue and optimize imports for Java files, using Android Studio functionality.
2021-01-16 13:23:42 +01:00
TiA4f8R a57fd69fb4
External sharing improvements
Improve NewPipe's share on some devices + fix crash when no browser is set on some devices

Catching ActivityNotFoundException when trying to open the default browser
Use an ACTION_CHOOSER intent and put as an extra intent the intent to
open an URI / share an URI when no default app is set.

Add a LinkHelper class which set a custom action when clicking web links
in the description of a content. This class also helps to implement a confirmation dialog when trying to open web links in an external app.
2021-01-16 13:23:06 +01:00
Isira Seneviratne 920e560b4b Convert AnimationUtils functions to extension functions. 2021-01-16 14:49:37 +05:30
Robin 98ed80d305
Merge pull request #5274 from vkay94/stream-segments
Add stream segments to player controls
2021-01-15 10:59:34 +01:00
Stypox c216f29fb0
Merge pull request #5418 from Isira-Seneviratne/Unify_constants
Combine the two Constants files into one file.
2021-01-15 09:20:08 +01:00
Isira Seneviratne 14ddf37988 Combine the two Constants files into one file. 2021-01-15 12:13:47 +05:30
Isira Seneviratne 87568b6590 Fix the crash that occurs on navigating back to the main fragment. 2021-01-15 06:54:20 +05:30
vkay94 37aa41afae Add stream segments to player 2021-01-14 21:58:19 +01:00
Tobias Groza 8fd48a88be
Merge pull request #4939 from Atemu/dont-exit-fullscreen-on-rotation
VideoDetailFragment: Don't exit fullscreen on rotation in tablet UI
2021-01-14 16:25:51 +01:00
Stypox 10c35f354e
Merge pull request #5225 from XiangRongLin/extract_settings_import
Extract settings import
2021-01-14 15:18:36 +01:00
Stypox 9ee7740fcc
Merge pull request #4947 from Isira-Seneviratne/Convert_ExceptionUtils_to_extensions
Rewrite ExceptionUtils methods as extension functions.
2021-01-14 14:54:37 +01:00
Stypox 94b086de20
Merge pull request #4814 from Isira-Seneviratne/Use_view_binding_in_fragments
Use view binding in fragments.
2021-01-14 14:40:19 +01:00
Robin c90696e67e
Merge pull request #5371 from Stypox/merge-player
Merge player classes into a single one
2021-01-14 10:43:11 +01:00
Stypox 8378789f6a
Fix view binding types 2021-01-14 10:25:48 +01:00
Stypox 059bb7622d
Merge and rename into PlayQueueActivity 2021-01-14 10:25:48 +01:00
Stypox cece83328a
Fix wrong speed indicator in queue activity 2021-01-14 10:25:48 +01:00
Stypox 4a12b0ab2d
Revert hiding detail fragment tabs when in fullscreen 2021-01-14 10:25:48 +01:00
Stypox f6e2dd1480
Merge player classes into a single one 2021-01-14 10:25:44 +01:00
Isira Seneviratne f04b5fd42f Use view binding in FeedGroupReorderDialog. 2021-01-14 11:16:08 +05:30
Isira Seneviratne 5994cd8ea2 Use view binding in FeedGroupDialog. 2021-01-14 11:16:07 +05:30
Isira Seneviratne 83f33a7d1b Use view binding in SubscriptionFragment. 2021-01-14 11:16:06 +05:30
Isira Seneviratne f80e1bd214 Use view binding in FeedFragment. 2021-01-14 11:16:05 +05:30
Isira Seneviratne 97672f06de Use view binding in SearchFragment. 2021-01-14 11:16:04 +05:30
Isira Seneviratne 6039484a02 Use view binding in ChannelFragment. 2021-01-14 11:16:03 +05:30
Isira Seneviratne 7682ebd245 Use view binding in DownloadDialog. 2021-01-14 11:16:01 +05:30
Isira Seneviratne 7c581ec108 Use view binding in LicenseFragment. 2021-01-14 11:16:00 +05:30
Isira Seneviratne 910d22daa6 Use view binding in MainFragment. 2021-01-14 11:15:58 +05:30
Isira Seneviratne 979102a2d9 Return ViewBinding instead of View in BaseListFragment's getListHeader() and getListFooter() methods. 2021-01-14 11:15:57 +05:30
Isira Seneviratne 98be89a20a Return ViewBinding instead of View in BaseLocalListFragment's getListHeader() and getListFooter() methods. 2021-01-14 11:15:54 +05:30
Robin 0264383ad2
Merge pull request #5358 from XiangRongLin/testable_prettytime
Make Localization.relativeTime testable
2021-01-13 22:44:11 +01:00
Isira Seneviratne fa75c79d34
Use view binding (PlayerPopupCloseOverlayBinding) in VideoPlayerImpl. 2021-01-13 20:44:00 +01:00
Isira Seneviratne 0c86a4e608
Use view binding (PlayerBinding) in VideoPlayer. 2021-01-13 20:43:56 +01:00
XiangRongLin 031585be3f Add comment about unexpected assertion 2021-01-13 17:25:00 +01:00
Tobias Groza 92a87a5ed2
Merge pull request #5310 from khimaros/list-play-kodi
add list item to play video on kodi
2021-01-13 17:02:56 +01:00
Isira Seneviratne 50dcf308a2 Add extension functions that accept reified types. 2021-01-11 16:49:46 +05:30
Isira Seneviratne 486e720e00 Rewrite ExceptionUtils methods as extension functions. 2021-01-11 16:49:45 +05:30
bopol 43e4dc8170 update extractor version 2021-01-10 15:54:01 +01:00
bopol 5c4d72ec42 Merge remote-tracking branch 'upstream/dev' into sepiasearch 2021-01-10 15:53:20 +01:00
nadiration 0ff7170ab1
Update settings_keys.xml
Changed the Somali language name from Af-Soomaali to Soomaali which is common and more user friendly when users are looking for Somali language in the list (since they aren't expecting it starts with A as in Af-Soomaali).
I contributed the language to the project on Weblate and I think this is name is better.
2021-01-09 18:39:43 +03:00
Robin 6b2f084cda
Merge pull request #5331 from mbarashkov/hardware-keyboard-space-shortcut
In Fullscreen playback, toggle play/pause with hardware space button
2021-01-07 17:09:27 +01:00
Mikhail Barashkov 907106156f When in Fullscreen playback mode, toggle play/pause with the hardware Space button. 2021-01-07 17:32:16 +02:00
XiangRongLin 50a026183d Make Localization.relativeTime testable
Problem is global state in static variable prettyTime. But for performance reasons on Android that is preferred.
Now allow injecting prettyTime dependency by making init function public.
2021-01-06 14:48:34 +01:00
XiangRongLin 716d795970 cleanup 2021-01-03 20:32:16 +01:00
XiangRongLin fcfdcd1025 Fix ensureDbDirectoryExists 2021-01-03 20:32:16 +01:00
XiangRongLin af119db1d7 Extract settings file deletion 2021-01-03 20:32:16 +01:00
XiangRongLin 122e80fae9 Remove subclasses from ContentSettingsManagerTest
ExportTest provides no value.
ImportTest creates temporary files even if not needed.
2021-01-03 20:32:16 +01:00
XiangRongLin 8fceffd6fd Introduce NewPipeFileLocator class 2021-01-03 20:32:16 +01:00
XiangRongLin f778c48923 Add basic tests for settings import 2021-01-03 20:32:16 +01:00
XiangRongLin 19cd3a17df Move isValidZipFile to ZipHelper 2021-01-03 20:32:16 +01:00
XiangRongLin ea91a62c89 Adjust ExportTest to new DI with FileLocator 2021-01-03 20:32:16 +01:00
XiangRongLin cef791ba1b Introduce NewPipeFileLocator class
It handles locating specific NewPipe files based on the home directory of the app.
2021-01-03 20:32:16 +01:00
XiangRongLin f78a7fa630 Extract import database logic in ContentSettingsManager 2021-01-03 20:32:16 +01:00
khimaros ac59382b84 pass serviceId instead of item, reduce duplication 2021-01-02 11:24:33 -08:00
TiA4f8R aeca8dc5b2
Disable sending metrics to Google in Android System Webview
Fixes TeamNewPipe/NewPipe#5335
2021-01-02 14:39:31 +01:00
Isira Seneviratne 14a2171035 Use Objects.requireNonNull(). 2021-01-02 09:36:33 +05:30
Stypox 1b4bde4e78
Merge pull request #5221 from B0pol/notifications
Dynamically get package name
2021-01-01 18:05:43 +01:00
TacoTheDank 71add5a7c2 Update displayed licenses 2020-12-31 19:26:41 -05:00
Robin ce2719d77e
Merge pull request #5317 from XiangRongLin/timestamp
Fix urls with timestamps not being played
2020-12-31 12:46:40 +01:00
Robin 8193a0df63
Merge pull request #5065 from TacoTheDank/androidx-media-audioreactor
Use AndroidX Media compat in AudioReactor
2020-12-31 10:55:11 +01:00
khimaros 48a5107296 address pull request feedback 2020-12-30 14:45:14 -08:00
TacoTheDank ebd589c9cb Use AndroidX Media compat in AudioReactor 2020-12-30 17:10:57 -05:00
XiangRongLin 1f15368b7b Fix urls with timestamps not being played
Else path is now executed, when a timestamp (item.getRecoveryPosition) is present
2020-12-30 21:07:30 +01:00
Stypox 8fe1a76ec6
Merge pull request #5301 from EricLemieux/fix-npe-play-button
Fix null pointer exception in play button method
2020-12-30 17:48:40 +01:00
khimaros 83faf119a9 add list item to play video on kodi
closes: #5157
2020-12-29 18:53:32 -08:00