Commit graph

4629 commits

Author SHA1 Message Date
nagai
bb4e34110b * ext/tk/lib/tk/timer.rb: TkTimer.new(interval, loop){ ... } is acceptable.
Add TkTimer.start ( == new + start ).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-15 09:06:52 +00:00
nagai
3514110b89 * ext/tk/lib/tk/*: untabify
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-11 04:51:21 +00:00
aamine
493bcc9b64 * ext/ripper/lib/ripper/filter.rb: require ripper/tokenizer.
* ext/ripper/lib/ripper/filter.rb (parse): argument is optional.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-09 17:49:41 +00:00
nagai
d2eea09f4a * ext/tk/lib/tk/optiondb.rb: make it more secure
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-07 16:14:29 +00:00
nagai
c2f8cec766 * ext/tk/lib/tk/scrollbar.rb: When 'set' operation, a scrollbar cannot
propagate view port information from the source widget (that calls
  'set') to other assigned widgets.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-07 14:50:59 +00:00
nagai
046d4e7ee1 * ext/tk/lib/tk.rb: When CHILDKILLED and so on, Tk.errorCode returns
a Fixnum for 2nd element (it's pid) of the return value.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-07 08:38:03 +00:00
nobu
790fa9041a * ext/stringio/stringio.c: use FMODE_APPEND.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-06 17:57:19 +00:00
nagai
fd6f4e20cc * ext/tk/lib/tk.rb: add Tk.errorInfo and Tk.errorCode
* ext/tk/lib/tkextlib/bwidget.rb: bug fix


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-06 16:08:45 +00:00
nagai
581ca6097e * ext/tk/lib/tk/image.rb: bug fix
* ext/tk/lib/tk/optiondb.rb: support definition of command resources on widgets


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-04 03:56:00 +00:00
nagai
8e292f6285 * ext/tk/lib/tk/grid.rb: revive TkGrid.grid
* ext/tk/lib/tk/pack.rb: revive TkPack.pack
* ext/tk/lib/tk/place.rb: revive TkPlace.place


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6975 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-01 02:27:03 +00:00
nagai
83185f9ff0 * ext/tcltklib/tcltklib.c (ip_init): bug fix
* ext/tk/tkutil.c (get_eval_string_core): accept a Regexp object
* ext/tk/lib/multi-tk.rb: fix bug on 'exit' operation
* ext/tk/lib/tk/text.rb: 'tksearch' accepts a Regexp object as a
  matting pattern argument


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-29 15:54:32 +00:00
matz
30116ff8c2 * array.c (rb_ary_delete): comparison may change the capacity.
[ruby-dev:24348]

* array.c (rb_ary_fill): fill should honor length argument.
  [ruby-dev:24346]

* array.c (rb_ary_replace): should not use ptr from shared array.
  [ruby-dev:24345]

* ext/socket/socket.c (s_accept): don't retry for EWOULDBLOCK.
  [ruby-talk:113807]

* array.c (flatten): element size might change during comparison.
  [ruby-dev:24343]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-29 05:15:33 +00:00
matz
c0a998d027 * parse.y (rb_parser_append_print): should handle prelude.
[llama@u01.gate0]

* parse.y (rb_parser_while_loop): ditto.

* array.c (rb_ary_subseq): original object might be modified after
  sharing data creation.  [ruby-dev:24327]

* array.c (rb_ary_replace): ditto.

* array.c (ary_make_shared): freeze shared array. [ruby-dev:24325]

* struct.c (struct_members): always check struct size and size of
  members list in the class.  [ruby-dev:24320]

* string.c (rb_str_sub_bang): check if string is not modified
  during iteration.  [ruby-dev:24315]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-24 05:53:43 +00:00
aamine
0c9d76889a * ext/ripper/Makefile.dev: removed.
* ext/ripper/ripper.rb.in: moved to lib/ripper/core.rb.in.
* ext/ripper/lib/ripper/core.rb: new file.
* ext/ripper/lib/ripper/core.rb.in: new file.
* ext/ripper/tools/generate-ripper_rb.rb: change comment.
* test/ripper/*.rb: on_scan removed.
* test/ripper/*.rb: event name changed: on__ -> on_.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-23 10:49:11 +00:00
aamine
2c17921671 * parse.y [ripper]: on__scan event removed.
* parse.y [ripper]: event name is changed: on__XXX -> on_XXX.
* ext/ripper/eventids2.c: ditto.
* ext/ripper/ripper.rb.in: ditto.
* ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
* ext/ripper/lib/ripper/tokenizer: ditto.
* ext/ripper/lib/ripper/filter: new file.
* sample/ripper/colorize.rb: new file.
* sample/ripper/strip-comment.rb: new file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-22 05:22:50 +00:00
ttate
f427cf9352 should use 'c' for 'unsigned char ref'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-21 12:47:48 +00:00
aamine
90ae99b0f0 * ext/ripper/lib/ripper/tokenizer.rb: fix typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-20 08:47:32 +00:00
aamine
2c750e368d * test/ripper/test_scanner_events.rb: tokens must be reordered.
* ext/ripper/lib/ripper/tokenizer.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-20 08:42:00 +00:00
aamine
b2a700f13e * parse.y [ripper]: do not delay dispatching.
* ext/ripper/lib/ripper/tokenizer.rb: sort tokens by right order.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-20 07:59:30 +00:00
eban
273d0344a8 * ext/ripper/MANIFEST: add lib/ripper/tokenizer.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-20 07:16:33 +00:00
aamine
d781183f42 * ext/ripper/lib/ripper/tokenizer.rb: new file.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-20 06:18:28 +00:00
aamine
144339d4bc * parse.y [ripper]: adjust lineno and columns for multi-line strings.
* parse.y [ripper]: delay heredocument events until seeing end-of-line.
* parse.y [ripper]: event on__heredoc_contentn -> on__tstring_content.
* ext/ripper/eventids2.c: ditto.
* ext/ripper/lib/ripper.rb: sync with eventids2.c.
* test/ripper/test_scanner_events.rb: test it.
* ext/ripper/tools/generate-ripper_rb.rb: show basename of input.
* ext/ripper/Makefile.dev: support objdir build.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-20 05:40:23 +00:00
aamine
c2c7f4c186 * ext/ripper/ripper.rb.in: new const Ripper::PARSER_EVENT_TABLE.
* ext/ripper/ripper.rb.in: new const Ripper::SCANNER_EVENT_TABLE.
* ext/ripper/lib/ripper.rb: sync with ripper.rb.in.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-19 19:49:56 +00:00
aamine
0ad4ae91ea * parse.y [ripper]: spaces before heredoc marker was lost.
* keywords: rb_reserved_word() should be defined only in ruby core.
* lex.c: sync with keywords.
* ext/ripper/ripper.rb.in (parse): fix typo.
* ext/ripper/lib/ripper.rb: sync with ripper.rb.in.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6924 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-19 18:48:29 +00:00
akr
44abd80865 * ext/zlib/zlib.c (gzfile_read_raw): call readpartial at first.
(Zlib::GzipReader#readpartial): new method.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6923 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-19 18:42:32 +00:00
usa
0a4e53a5c5 * parse.y: add prototypes for Microsoft compiler.
* ext/ripper/depend (parse.obj): lex.c exists at hdrdir.

* {bcc32,win32,wince}/Makefile.sub (YACC, YFLAGS, parse.c):
  use bison.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6921 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-17 11:38:49 +00:00
matz
e77ddaf0d1 * array.c (rb_ary_delete): element comparison might change array
size. [ruby-dev:24273]

* parse.y: make ruby parser reentrant. merge ripper parser to the
  real one.  this change makes ruby require bison.

* file.c (rb_file_truncate): clear stdio buffer before truncating
  the file.  [ruby-dev:24191]

* ext/digest/digest.c: use rb_obj_class() instead of CLASS_OF
  which might return singleton class.  [ruby-dev:24202]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-17 09:24:13 +00:00
nagai
7b66963f61 * ext/tk/lib/multi-tk.rb: improve exit operation
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-17 07:09:28 +00:00
nagai
2785975489 * ext/tcltklib/tcltklib.c: fix SEGV when (thread_)vwait or (thread_)tkwait
* ext/tk/lib/tk.rb: add alias wait_window to wait_destroy
* ext/tk/lib/multi-tk.rb: support calling 'mainloop' on slave interpreters
  (however, the 'real' eventloop must be run on the Default Master IP)
* ext/tk/lib/remote-tk.rb: follow the changes of ext/tk/lib/multi-tk.rb
* ext/tk/sample/remote-ip_sample2.rb: ditto
* ext/tk/sample/tkoptdb-safeTk.rb: ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-17 06:05:33 +00:00
ttate
2ce5bb2594 added 'const char *' to use the type specifier 'S' instead of 'char *'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-16 15:22:20 +00:00
nagai
3c37859186 * ext/tk/lib/tkoptdb-safeTk.rb: fix a bug depend on the changes of MultiTkIp
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6911 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-15 11:24:22 +00:00
nagai
011a851696 * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string was en-bugged by the
previous changes.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-14 14:59:04 +00:00
aamine
d3bce8cb5a * parse.y [ripper]: space event is on__sp, not on__lwsp. [ruby-dev:24257]
* ext/ripper/eventids2.c: ditto.
* ext/ripper/lib/ripper.rb: ditto.
* ext/ripper/depend (ripper.o): No action is needed. [ruby-dev:24260]
* ext/ripper/depend: Borland make does not accept pipes in Makefile rules. [ruby-dev:24589]
* ext/ripper/depend: separate rules for developpers.
* ext/ripper/Makefile.dev: new file.
* ext/ripper/MANIFEST: add Makefile.dev.
* ext/ripper/tools/generate-eventids1.rb: read from file, not stdin.
* ext/ripper/extconf.rb: clean ripper.E.
* ext/ripper/tools/generate-ripper_rb.rb: #include ids1/ids2 function was lost.
* ext/ripper/tools/generate-ripper_rb.rb: SCANNER_EVENTS wrongly contained parser events.
* ext/ripper/lib/ripper.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-14 11:27:36 +00:00
nagai
1130f2cbfa * ext/tcltklib/tcltklib.c: fix SEGV
* ext/tk/lib/multi-tk.rb: improve safe-level handling of argument proc
* ext/tk/sample/multi-ip_sample.rb: rename of old 'safe-tk.rb'
* ext/tk/sample/safe-tk.rb: new sample script


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-14 08:01:55 +00:00
gotoyuzo
07f245da37 * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): add optional
second argument to specify the output format (see also
  X509_NAME_print_ex).

* ext/openssl/ossl_x509name.c (ossl_x509name_init): new constants:
  OpenSSL::X509::Name::COMPAT, OpenSSL::X509::Name::RFC2253,
  OpenSSL::X509::ONELINE, OpenSSL::X509::MULTILINE.

* ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name::RFC2253DN):
  new module to provide the parse for RFC2253 DN format.

* ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name.parse_rfc2253):
  new method to parse RFC2253 DN format.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-13 12:35:25 +00:00
nagai
7945cd5978 * ext/tk/lib/multi-tk.rb: MultiTkIp.new_master and new_slave accept
safe-level value argument


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-13 07:25:02 +00:00
aamine
3f5c917860 * ext/ripper/depend: (nmake hack) prepend "./" to ripper.c to avoid {$(srcdir)}.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6894 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-13 00:30:47 +00:00
aamine
98258515dd * ext/ripper/tools/list-parse-event-ids.rb: does not use getopts.
* ext/ripper/tools/list-scan-event-ids.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-12 21:44:13 +00:00
aamine
5cdf9a0a19 * ext/Setup: add ripper.
* ext/Setup.atheos: ditto.
* ext/Setup.dj: ditto.
* ext/Setup.emx: ditto.
* ext/Setup.nt: ditto.
* ext/Setup.x68: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-12 17:42:49 +00:00
aamine
c971589817 * ext/ripper: ripper extention added.
* ext/ripper/MANIFEST: new file.
* ext/ripper/README: new file.
* ext/ripper/depend: new file.
* ext/ripper/extconf.rb: new file.
* ext/ripper/eventids2.c: new file.
* ext/ripper/ripper.rb.in: new file.
* ext/ripper/lib/ripper.rb: new file.
* ext/ripper/test/check-event-arity.rb: new file.
* ext/ripper/test/check-event-coverage.sh: new file.
* ext/ripper/test/check-scanner-event-coverage.rb: new file.
* ext/ripper/test/list-called-events.rb: new file.
* ext/ripper/test/src_rb: new file.
* ext/ripper/test/validate.rb: new file.
* ext/ripper/tools/generate-eventids1.rb: new file.
* ext/ripper/tools/generate-param-macros.rb: new file.
* ext/ripper/tools/generate-ripper_rb.rb: new file.
* ext/ripper/tools/list-parse-event-ids.rb: new file.
* ext/ripper/tools/list-scan-event-ids.rb: new file.
* ext/ripper/tools/preproc.rb: new file.
* ext/ripper/tools/strip.rb: new file.
* test/ripper: ripper tests added.
* test/ripper/dummyparser.rb: new file.
* test/ripper/test_parser_events.rb: new file.
* test/ripper/test_scanner_events.rb: new file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6891 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-12 17:34:30 +00:00
nagai
5bea219a9d * ext/tcltklib/tcltklib.c: improve control of preserv/release tcltkip
* ext/tcltklib/tcltklib.c: store original 'exit' command
* ext/tk/tkutil.c: fix(?) SEGV


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-12 16:05:59 +00:00
nagai
82ba5974c4 * ext/tcltklib/tcltklib.c: add TclTkIp#allow_ruby_exit? and allow_ruby_exit=
* ext/tk/lib/multi-tk.rb: ditto.
* ext/tk/lib/remote-tk.rb: ditto.
* ext/tcltklib/MANUAL.euc: ditto.
* ext/tcltklib/MANUAL.eng: ditto.

* ext/tcltklib/tcltklib.c: fix some reasons of SEGV
* ext/tk/tkutil.c: ditto.
* ext/tk/lib/multi-tk.rb: ditto.
* ext/tk/lib/tk/timer.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-11 17:45:53 +00:00
ocean
b22110e517 * ext/tcltklib/tcltklib.c (lib_merge_tklist): fix suspicious
pointer conversion.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6881 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-10 11:22:31 +00:00
nagai
d782aad77d * ext/tcltklib/tcltklib.c (ip_init): change flag value for setting 'argv' and 'argv0' variable
* ext/tk/lib/remote-tk.rb: follow changes of multi-tk.rb


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-09 05:03:21 +00:00
nobu
a838eb5c65 * ext/stringio/stringio.c (strio_write): zero fill a gap if exsts.
[ruby-dev:24190]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-08 09:44:46 +00:00
nagai
38bbb9673f * ext/tcltklib/tcltklib.c (ip_init): cannot create a IP at level 4
* ext/tk/lib/multi-tk.rb: improve 'exit' operation, security check, and error treatment
* ext/tk/lib/multi-tk.rb: allow a trusted slave IP to create slave IPs.
* ext/tk/lib/tk/listbox.rb: add TkListbox#value, value=, clear, and erase
* ext/tk/lib/tk/text.rb: add TkText#clear and erase


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-08 06:23:41 +00:00
usa
f4d60b5f63 * {bcc32,win32,wince}/Makefile.sub (config.h): add fcntl.
* win32/win32.[ch] (fcntl): ditto.

* win32/win32.c (rb_w32_connect): support nonblocking mode.

* ext/socket/socket.c (wait_connectable, ruby_connect): support
  nonblocking connect on various platforms.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-07 03:52:15 +00:00
ocean
70f8c054b2 * ext/tk/lib/tk/menu.rb(TkOptionMenubutton#insert): call correct method
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-06 02:03:02 +00:00
nagai
7cf8256075 * ext/tk/lib/tk.rb: Tk.after makes TkCore::INTERP.tk_cmd_tbl grow [ruby-dev:24207]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-03 02:33:08 +00:00
nagai
0a054a5fd8 * ext/tcltklib/tcltklib.c: fix typo [ruby-talk:111266]
* ext/tk/lib/tk/text.rb: fix typo
* ext/tk/lib/multi-tk.rb: improve safe-level treatment on slave IPs


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-02 17:17:20 +00:00