Commit graph

59 commits

Author SHA1 Message Date
Edward Hervey
79b851ff26 gst: Register new GST_ELEMENT_FACTORY_LIST_TYPE constants 2010-10-22 13:27:33 +02:00
Edward Hervey
3e73bfc4b2 gst: Export some pygst API to be used by external modules
Partially fixes #590348
2010-10-18 12:01:02 +02:00
Edward Hervey
eb8869dce1 gst: Bump required core/base to 0.10.20
And clean up code accordingly
2010-10-18 12:01:02 +02:00
Alessandro Decina
e20157bda2 gst: implement getters and setters for GST_TYPE_FRACTION properties. Fixes #624882. 2010-07-26 19:42:34 +02:00
Edward Hervey
22db96fc6d gst: Add GST_TAG_IMAGE_ORIENTATION 2010-07-07 12:12:09 +02:00
Thiago Santos
5ea379d845 gstmodule: Add missing tags
Map GST_TAG_* that were missing in gst-python bindings
2010-05-03 14:15:20 -03:00
Edward Hervey
a41177e510 Wrap new API added in gstreamer-0.10.23. Partially fixes #578848 2009-04-17 18:51:40 +02:00
Edward Hervey
103e13fa66 gst/: Fix double-import issues on macosx.
Original commit message from CVS:
* gst/common.h:
* gst/gstmodule.c:
* gst/interfaces.override:
* gst/pbutils.override:
* gst/pygstiterator.c:
* gst/pygstminiobject.c:
* gst/pygstminiobject.h:
Fix double-import issues on macosx.
Fixes #461838
2008-06-26 14:57:29 +00:00
Edward Hervey
4e33f9fdcc gst/gstmodule.c: Return None if GstMiniObject GValue doesn't contain anything (NULL).
Original commit message from CVS:
* gst/gstmodule.c: (pygstminiobject_from_gvalue):
Return None if GstMiniObject GValue doesn't contain anything (NULL).
Fixes #540221
2008-06-26 09:14:51 +00:00
Edward Hervey
e97c51a473 gst/gstmodule.c: Remove do_pending_calls timeout which has been handled more gracefully in pygobject MainLoop for the...
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
Remove do_pending_calls timeout which has been handled more gracefully
in pygobject MainLoop for the past 3 years.
Fixes #512916
2008-01-30 12:36:06 +00:00
Edward Hervey
c0b572b89f gst/: Update API changes for core+base pre-releases
Original commit message from CVS:
* gst/base.defs:
* gst/gst-0.10.15.ignore:
* gst/gst.defs:
* gst/gst.override:
* gst/gstmodule.c: (init_gst):
Update API changes for core+base pre-releases
2007-11-08 19:56:54 +00:00
Edward Hervey
7eebff4489 gst/gstmodule.c: Added new gst.TAG_COMPOSER constant that appeared in core 0.10.15.
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
Added new gst.TAG_COMPOSER constant that appeared in core 0.10.15.
2007-10-13 16:31:35 +00:00
Andy Wingo
705ffb4135 gst/gstmodule.c (DL_EXPORT): Remove the atexit(gst_deinit).
Original commit message from CVS:
2007-09-11  Andy Wingo  <wingo@pobox.com>

* gst/gstmodule.c (DL_EXPORT): Remove the atexit(gst_deinit).
Atexit handlers are run after python has finalized (see Py_Exit in
pythonrun.c), but gst_deinit can potentially call back into python
e.g. for python-defined plugins. Not sure how other people are
avoiding this segfault, but I see it all the time on Gusty x86-64
with Flumotion.
2007-09-11 11:49:50 +00:00
Edward Hervey
7ef06cab13 gst/: Adding new API additions
Original commit message from CVS:
* gst/base.defs:
* gst/gst.defs:
* gst/interfaces.defs:
* gst/libs.defs:
* gst/gst.override:
* gst/gstmodule.c: (init_gst):
Adding new API additions
* gst/gstmessage.override:
wrap GstMessage.parse_buffering.
* gst/interfaces.override:
wrap gst_mixer_message_parse_*() functions.
wrap GstVideoOrientation::get_*() methods.
2007-07-28 14:26:54 +00:00
Edward Hervey
83e76dd47d gst/gst-0.10.10.ignore: Added symbols added in 0.10.10
Original commit message from CVS:
* gst/gst-0.10.10.ignore:
Added symbols added in 0.10.10
* gst/gst-0.10.6.ignore:
gst_dp_packetizer_new() addition
* gst/gst.defs:
Updated API for 0.10.10 symbols
* gst/gstmodule.c: (init_gst):
Added GST_TAG_EXTENDED_COMMENT which appeared in 0.10.10
* gst/libs.defs:
Added gst_dp_packetizer_new() which was added in 0.10.6. It still won't
work because GstDPPacketizer is a pointer. It needs to have a GBoxed
definition in order to be used properly within gst-python.
Also added controller-related additions
2006-10-20 11:33:01 +00:00
Edward Hervey
26393eba9d gst/gstmodule.c: Added gst.BUFFER_OFFSET_NONE for proper (guint64) -1 conversion between python and C.
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
Added gst.BUFFER_OFFSET_NONE for proper (guint64) -1 conversion between
python and C.
2006-07-05 11:35:12 +00:00
Thomas Vander Stichele
fc67bb7842 gst/gstmodule.c: don't crash when error is NULL
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
don't crash when error is NULL
2006-07-03 13:31:19 +00:00
Edward Hervey
1c5a18e82c Removal of all glib < 2.8 cruft since GStreamer core now requires glib >= 2.8
Original commit message from CVS:
Removal of all glib < 2.8 cruft since GStreamer core now requires
glib >= 2.8
* codegen/argtypes.py:
remove gstobject cruft from ObjectArg
* configure.ac:
Require glib >= 2.8.0
* gst/Makefile.am:
* gst/pygstobject.c:
* gst/pygstobject.h:
Remove pygstobject.[ch]
* gst/common.h:
Don't include removed header file.
* gst/gst.override:
* gst/gstbin.override:
* gst/gstbus.override:
* gst/gstelement.override:
* gst/gstelementfactory.override:
* gst/gstmessage.override:
* gst/gstobject.override:
* gst/gstpad.override:
* gst/interfaces.override:
* gst/pygstiterator.c: (pygst_iterator_iter_next):
Switch from using pygstobject* functions to using pygobject* functions.
* gst/gstmodule.c: (sink_gstobject), (init_gst):
Move GstObject sink function here and use standard gobject refcounting.
2006-07-02 15:25:04 +00:00
Edward Hervey
6189051361 gst/: Update for API additions.
Original commit message from CVS:
* gst/base.defs:
* gst/gst-0.10.7.ignore:
* gst/gst-types.defs:
* gst/gst.defs:
* gst/gstbase.override:
* gst/libs.defs:
Update for API additions.
* gst/gstmodule.c: (init_gst):
Added new GST_TAG_IMAGE and GST_TAG_PREVIEW_IMAGE
2006-06-09 10:12:16 +00:00
Edward Hervey
726357893f gst/gstmodule.c: Wrap the gstreamer error domains quark.
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
Wrap the gstreamer error domains quark.
Fixes #339040
2006-04-28 14:54:45 +00:00
Edward Hervey
37e88dd9f6 gst/gstmodule.c: gst.gst_version uses the result of gst_version() rather than use the GST_VERSION_* hardcoded values.
Original commit message from CVS:
reviewed by: Edward Hervey  <edward@fluendo.com>
* gst/gstmodule.c: (init_gst):
gst.gst_version uses the result of gst_version() rather than use
the GST_VERSION_* hardcoded values.
Closes #331616
2006-02-22 10:16:33 +00:00
Edward Hervey
e11b1fcafa gst/: Remove deprecated code dating back from 0.8 era.
Original commit message from CVS:
* gst/gst.override:
* gst/gstmodule.c: (python_do_pending_calls):
Remove deprecated code dating back from 0.8 era.
2006-02-07 18:54:52 +00:00
Edward Hervey
e3beb3ed78 gst/gstmodule.c: Added GST_TAG_* string constants
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
Added GST_TAG_* string constants
* gst/gstpad.override:
Make probe handler return TRUE if the Python callback doesn't return
anything.
* gst/gsttaglist.override:
Cleaned up gst.TagList, works as a dictionnary.
2005-11-10 12:48:49 +00:00
Edward Hervey
f50c30441c examples/gstfile.py: misc fixes
Original commit message from CVS:
* examples/gstfile.py:
misc fixes
* gst/Makefile.am:
* gst/pygstexception.c:
* gst/pygstexception.h:
* gst/gstelementfactory.override:
* gst/gst.override:
* gst/gstpad.override:
* gst/gstmodule.c: (init_gst):
Added exceptions system by Alessandro Decina <alessandro@nnva.org>
Closes bug #315433
* gst/gstbus.override:
* gst/gstelement.override:
Fix for _wrap_gst_element_get_state()
* gst/gstobject.override:
More debug
2005-10-13 10:41:06 +00:00
Andy Wingo
584088b78c gst/gst-extrafuncs.defs (flags, set_flag, unset_flag): Fix for core updates.
Original commit message from CVS:
2005-10-12  Andy Wingo  <wingo@pobox.com>

* gst/gst-extrafuncs.defs (flags, set_flag, unset_flag): Fix for
core updates.

* gst/gstmodule.c (init_gst): Give a better error message.

(also fix the changelog)
2005-10-12 16:05:15 +00:00
Edward Hervey
56f25a4653 gst/common.h: cleanup
Original commit message from CVS:
* gst/common.h:
cleanup
* gst/gst-types.defs:
* gst/gst.defs:
Updated defs file to current gstreamer core
* gst/gst.override:
Added useless function (at least from python bindings) and little correction
on _wrap_gst_xml_get_topelements()
* gst/gstbin.override:
* gst/gstbuffer.override:
Fix memleak in gst.Buffer.set_caps()
* gst/gstevent.override:
Added wrapper for remaining gst_event_parse_*()
* gst/gstlibs.override:
Wrapped more gst.Controller methods
* gst/gstmodule.c: (init_gst):
new gst_init()
Added atexit(gst_deinit)
* gst/gstpad.override:
Fix memleak in gst.Pad.set_caps()
* gst/gstquery.override:
add gst.Query.parse_segment()
* gst/libs.defs:
Updated to current gst-libs
* gst/pygstminiobject.c: (pygstminiobject_register_wrapper),
(pygstminiobject_new), (pygstminiobject_dealloc):
Added debug
* testsuite/Makefile.am:
* testsuite/common.py:
* testsuite/gstpython.supp:
* testsuite/python.supp:
* testsuite/test_bin.py:
* testsuite/test_buffer.py:
* testsuite/test_element.py:
* testsuite/test_event.py:
* testsuite/test_ghostpad.py:
* testsuite/test_iterator.py:
* testsuite/test_message.py:
* testsuite/test_pipeline.py:
Proper valgrind testing,
Updated tests to new API
2005-10-11 12:42:53 +00:00
Johan Dahlin
8ff948737b gst/: Even more bored tonight: Implement next/resync/push.
Original commit message from CVS:
* gst/common.h:
* gst/gstmodule.c: (init_gst):
* gst/pygstiterator.c: (pygst_iterator_iter_next),
(pygst_iterator_next), (pygst_iterator_push),
(pygst_iterator_resync):
Even more bored tonight: Implement next/resync/push.
Register type so we can call methods and so.
2005-10-07 01:52:28 +00:00
Edward Hervey
2a96c988c0 gst/gstbuffer.override: Proper wrapping of the GstBuffer.caps attribute
Original commit message from CVS:
* gst/gstbuffer.override: (_wrap_gst_buffer__get_caps):
Proper wrapping of the GstBuffer.caps attribute
* gst/gstmodule.c: (init_gst):
* gst/pygstminiobject.c: (pygstminiobject_register_class):
gst-debug initialisation should happen before anything else if we
want the debugging functions to work.
2005-10-06 13:51:31 +00:00
Thomas Vander Stichele
64bc1f0c1b snakes are green
Original commit message from CVS:
snakes are green
2005-10-06 09:49:58 +00:00
Thomas Vander Stichele
58c3c18b93 gst/: deprecate add_many/remove_many, fold into add/remove
Original commit message from CVS:

* gst/gst.defs:
* gst/gst.override:
* gst/gstbin.override:
deprecate add_many/remove_many, fold into add/remove
* gst/gstmodule.c: (init_gst):
add AddError and RemoveError
* testsuite/Makefile.am:
remove fatal warnings, until we can wrap log handlers
and catch our expected add/remove errors
* testsuite/test_bin.py:
add tests for new add/remove semantics
* testsuite/test_pad.py:
* testsuite/test_pipeline.py:
fix up
2005-09-30 15:23:15 +00:00
Thomas Vander Stichele
5768672390 gst/: add/move some code to handle wrapping/refcounting of possible
Original commit message from CVS:
* gst/Makefile.am:
* gst/common.h:
* gst/pygstobject.c: (pygstobject_sink), (pygstobject_new),
(pygst_object_unref):
* gst/pygstobject.h:
* gst/gstmodule.c: (init_gst):
add/move some code to handle wrapping/refcounting of possible
GstObject
* codegen/argtypes.py:
* gst/gstbin.override:
* gst/gstbus.override:
* gst/gstelement.override:
* gst/gstpad.override:
* gst/interfaces.override:
use this reffing code
* gst/gst-types.defs:
* gst/gst.override:
add a __gstrefcount__ field to GstObject types
add tp_traverse, tp_dealloc and tp_clear, so we handle refcounting
properly related to garbage collection
* testsuite/test_element.py:
* testsuite/test_pad.py:
add more tests, add some refcount checks
2005-09-28 12:17:29 +00:00
Edward Hervey
1bc63d73b9 codegen/argtypes.py: Proper handling of 'caller-owns-return' for miniobjects
Original commit message from CVS:
* codegen/argtypes.py:
Proper handling of 'caller-owns-return' for miniobjects
* gst/gst-types.defs:
Updating parenting of classes,
added/removed/updated flags&enums
* gst/gst.defs:
Updated to current core cvs,
Added 'caller-owns-return' properties for functions/methods that require
it
* gst/gst.override:
Don't make *_[un]ref() accessible
* gst/gstbuffer.override:
* gst/gstevent.override:
* gst/gstmessage.override:
* gst/gstquery.override:
Removed hack-ish wrappers since codegenerator handles
'caller-owns-return' methods/functions
* gst/gstmodule.c: (sink_gstobject), (init_gst):
Re-enabled sink function
* gst/libs.defs:
Updated to current core cvs
Removed Adapter
* gst/pygstminiobject.c:
* gst/pygstminiobject.h:
removed _new_noref() hack
2005-09-28 10:58:50 +00:00
Thomas Vander Stichele
419ce01981 update for new plugin API
Original commit message from CVS:
update for new plugin API
2005-09-18 11:54:34 +00:00
Thomas Vander Stichele
dc83edf73e fix a race condition in test_buffer.py
Original commit message from CVS:
fix a race condition in test_buffer.py


* gst/gst.override:
* gst/gstmodule.c: (init_gst):
add a pygst debug category for bindings themselves to use
* gst/gstbuffer.override:
add a repr method; add some assertions
* gst/pygstminiobject.c: (pygst_miniobject_init),
(pygstminiobject_register_wrapper), (pygstminiobject_new),
(pygstminiobject_new_noref), (pygstminiobject_dealloc),
(pygstminiobject_clear):
make the miniobjs hash private with an underscore
add debugging for inserting/removal in hash
fix pygstminiobject_clear - it also needs to remove
from the global hash.  Fixes a nasty race problem in
test_buffer
* testsuite/test_buffer.py:
expand on the subbuffer test
2005-09-01 14:41:28 +00:00
Edward Hervey
762b581fcb gst/gstmodule.c: changed debug category name from 'gst-python' to 'python'
Original commit message from CVS:
* gst/gstmodule.c: (init_gst):
changed debug category name from 'gst-python' to 'python'
* gst/gst.override: (pygst_debug_log):
gchar is way smaller than an int... resulting in negative line numbers
in debug.
2005-08-10 15:42:03 +00:00
Edward Hervey
139163d89e gst/: We now have debugging in gst-python ;) gst.[log|debug|info|warning|error]()
Original commit message from CVS:
* gst/gst.defs:
* gst/gst.override:
* gst/gstmodule.c:
We now have debugging in gst-python ;)
gst.[log|debug|info|warning|error]()
2005-08-04 10:44:16 +00:00
Edward Hervey
32dbfea730 Remove old documentation system
Original commit message from CVS:
* README-docs:
* configure.ac:
* Makefile.am:
Remove old documentation system
* gst/gst.defs:
* gst/gst-types.defs:
Updating defs files
* gst/gst.override:
Wrapped gst_flow_get_name() for const-gchar *
* gst/gstelement.override:
I really should test everything on 32 AND 64 bits systems...
* gst/gstevent.override:
Updated gst_event_new_seek() wrapper
Added gst_event_get_structure() wrapper
* gst/gstmodule.c:
Changed definition of gst.CLOCK_TIME_NONE to wrap GST_CLOCK_TIME_NONE
* testsuite/testhelpermodule.c:
gst_event_new --> gst_event_new_custom
2005-08-01 09:59:55 +00:00
Edward Hervey
ae75cbd54b gst/: Added GError wrapping,
Original commit message from CVS:
* gst/gst-types.defs:
* gst/gst.defs:
Added GError wrapping,
Removed data field from Buffer,
Added virtual methods to object
Updated to latest API
* gst/gst.override:
wrapped gst_plugin_get_feature_list(), gst_uri_handler_get_protocols(),
gst_registry_pool_list()
* gst/gstbuffer.override:
gst.Buffer() works
get/setters fixed
wrapped gst_buffer_stamp()
* gst/gstbus.override:
wrapped gst_bus_set_sync_handler() and gst_bus_add_watch()
* gst/gstelement.override:
wrapped gst_element_send_event(), gst_element_factory_get_pad_templates()
gst_element_query_convert(), gst_element_get_query_types()
* gst/gstevent.override:
wrapped gst_event_discont_get_value()
* gst/gstmessage.override:
wrapped gst_message_parse_state_changed(), gst_message_parse_error(),
gst_message_parse_warning(), gst_message_parse_tag()
* gst/gstmodule.c:
Added registration of new fundamental type with pygtk
* gst/gstpad.override:
wrapped gst_pad_query(), gst_pad_[add|remove]_[data|event|buffer]_probe(),
gst_pad_query_position(), gst_pad_query_convert()
* gst/gstquery.override:
wrapped gst_query_parse_position(), gst_query_parse_convert(),
gst_query_parse_seeking_query(), gst_query_parse_seeking_reponse()
* gst/pygstminiobject.c:
fixes
* gst/Makefile.am:
added gstbus.override, gstmessage.override, gstquery.override
* testsuite/test_buffer.py:
* testsuite/test_element.py:
* testsuite/test_event.py:
* testsuite/test_pipeline.py:
Updating testsuites
2005-07-12 09:45:58 +00:00
Edward Hervey
bc47432fc8 gst/: Proper registration of PyGstMiniObject classes in order to be able to create Event, Messages, Buffers from python.
Original commit message from CVS:
* gst/gstmodule.c:
* gst/pygstminiobject.c:
Proper registration of PyGstMiniObject classes in order to be able to
create Event, Messages, Buffers from python.
More corrections on miniobject's refcounting
* gst/gstevent.override:
* gst/gstbuffer.override:
Removed overloaded overrides
* gst/gst.defs:
updated
2005-07-05 15:07:20 +00:00
Edward Hervey
038f11fafb codegen/: Updated codegen to support miniobject
Original commit message from CVS:
* codegen/argtypes.py:
* codegen/codegen.py:
* codegen/definitions.py:
* codegen/defsparser.py:
* codegen/docgen.py:
Updated codegen to support miniobject
* gst/Makefile.am:
Use the included (and modified) codegen for code generation.
* gst/pygstminiobject.c:
* gst/pygstminiobject.h:
* gst/pygstminiobject-private.h:
New GstMiniObject inspired from pygobject.[ch] code
* gst/common.h:
* gst/gst-types.defs:
* gst/gst.override:
* gst/gstbuffer.override:
* gst/gstcaps.override:
* gst/gstmodule.c:
* gst/gstpad.override:
Modifications to support MiniObject
* gst/gst.defs:
Allow null second parameter for ElementFactory.create()
and gst.element_factory_make()
2005-06-26 12:35:07 +00:00
Edward Hervey
d33dd2f565 gst/: commented-out deprecated code, compiles at last, and works for pipeline creation and state change
Original commit message from CVS:
* gst/arg-types.py:
* gst/common.h:
* gst/gst-argtypes.c:
* gst/gst-types.defs:
* gst/gst.defs:
* gst/gst.override:
* gst/gstelement.override:
* gst/gstmodule.c:
* gst/gstpad.override:
* gst/gststructure.override:
commented-out deprecated code,
compiles at last, and works for pipeline creation and state change
* configure.ac:
updated requirement of GStream (0.9.0), pygtk (2.6.1)
bumped version number (0.9.0.1)
2005-06-20 21:39:34 +00:00
Edward Hervey
c68afb5f53 Backport from 0.8 branch and added new .defs file from GStreamer 0.9
Original commit message from CVS:
Backport from 0.8 branch and added new .defs file from GStreamer 0.9
2005-06-17 10:59:47 +00:00
Brian Warner
ebae649260 gst/gst.override: Apply patch from Brian Warner to throw a link error when element and pad linking fails.
Original commit message from CVS:
* gst/gst.override: Apply patch from Brian Warner to throw a link
error when element and pad linking fails.
2004-11-29 12:14:27 +00:00
Johan Dahlin
b9f4f5e5f7 sink GstObject, much like GtkObject
Original commit message from CVS:
sink GstObject, much like GtkObject
2004-11-23 12:33:58 +00:00
Johan Dahlin
195af7df00 gst/gstmodule.c (init_gst): Reset LC_NUMERIC, since it might change in gst_init_check. Fixes 100% CPU usage in flumot...
Original commit message from CVS:
* gst/gstmodule.c (init_gst): Reset LC_NUMERIC, since it might
change in gst_init_check. Fixes 100% CPU usage in flumotion
when using a non C locale.
2004-11-15 11:51:50 +00:00
Zaheer Abbas Merali
087bae124f gst/gstmodule.c: Make gst-python not hang on import when embedded.
Original commit message from CVS:
2004-10-10  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

* gst/gstmodule.c: (init_gst):
Make gst-python not hang on import when embedded.
Fixes bug #155041
2004-10-10 20:49:27 +00:00
Thomas Vander Stichele
55a8ec7633 comment
Original commit message from CVS:
comment
2004-09-29 11:37:55 +00:00
Johan Dahlin
f915e8d473 gst/gstmodule.c (python_do_pending_calls): Use
Original commit message from CVS:
* gst/gstmodule.c (python_do_pending_calls): Use
PyOS_InterruptOccurred and only hold the GIL during
PyErr_SetNone. Use _pygst_main_quit to avoid errors/aborts. Also
use the pygtk provided gil macros instead of the python ones.
2004-09-29 11:13:21 +00:00
Johan Dahlin
169626bb24 configure.ac: Require python 2.3
Original commit message from CVS:
* configure.ac: Require python 2.3

* gst/gstmodule.c (python_do_pending_calls): Use PyGILState and
friends here.

* gst/gst.override (_pygst_main_quit, _pygst_main): Use these two
instead of gst_main/gst_main_quit so we can check if we're in a
mainloop or not.
2004-08-03 17:07:38 +00:00
Johan Dahlin
15f1eb48cf gst/gstmodule.c (init_gst): Add constants for GST_*SECOND.
Original commit message from CVS:
* gst/gstmodule.c (init_gst): Add constants for GST_*SECOND.
(python_do_pending_calls): New idler handler, similar to pygtk, so
python events (eg KeyboardInterrupt) can be raised during mainloop

* gst/gst.override (_wrap_gst_bin_get_list):
(_wrap_gst_pad_tp_repr, caps_length, caps_item)
(structure_length, structure_subscript)
(_wrap_gst_structure_tp_repr): Impl.
(_wrap_gst_main): Override with threading blocking.

* gst/gst-types.defs (Object): add flags field.
(Structure): Add copy/release funcs

* gst/__init__.py (devloc): Don't initialize threads

* gst/Makefile.am: clean up

* examples/gst/player.py: Prettify and simplify. Uses GstThread now.

* examples/gstplay/player.py: Update to new api and make it work.
2004-03-24 10:31:35 +00:00