Brian Gough
15c7c911f9
update request module
2019-04-15 14:46:58 +01:00
Brian Gough
2dbdcf5bc8
add health check to pubsub channels
2019-04-15 14:17:55 +01:00
Brian Gough
e72acacf17
downsample logging
2019-04-11 16:25:42 +01:00
Brian Gough
9eee098af4
Merge pull request #43 from sharelatex/bg-update-ioredis
...
update to redis-sharelatex v1.0.6 for latest ioredis
2019-04-11 15:50:56 +01:00
Brian Gough
cefdd15c5e
update to redis-sharelatex v1.0.6 for latest ioredis
2019-04-11 15:49:19 +01:00
Brian Gough
ef9e97e7d1
add metric for applied-ops events
2019-04-11 15:39:28 +01:00
Brian Gough
6374a641d5
fix unit tests
2019-04-11 15:07:42 +01:00
Brian Gough
c6225d614e
add /debug/events endpoint
2019-04-11 15:00:25 +01:00
Brian Gough
2a31139254
log and skip duplicate events
2019-04-11 12:53:43 +01:00
Brian Gough
893515e83f
handle duplicate entries in io.sockets.clients
2019-04-09 14:48:00 +01:00
Brian Gough
936311f1fb
fix eventlogger tests to use name with dashes
2019-03-22 11:20:38 +00:00
Brian Gough
efa83b4cde
stub out eventlogger in unit test
2019-03-22 11:19:31 +00:00
Brian Gough
6c71ae172b
return out of order events for consistency
2019-03-22 11:19:08 +00:00
Brian Gough
c5a09fcf0a
add comment about downsampling
2019-03-22 11:18:34 +00:00
Brian Gough
695472a8aa
fix event id parsing to allow for dashes in keys
2019-03-22 11:18:19 +00:00
Brian Gough
1ab5e52699
down-sample valid events by 1000
2019-03-21 15:52:53 +00:00
Brian Gough
e91b967bdb
use per-channel event metrics
2019-03-21 14:59:39 +00:00
Brian Gough
8c82faa966
check order of messages on applied-ops channel
2019-03-21 14:59:39 +00:00
Brian Gough
57c5ec14bd
check for a valid counter value in event log
2019-03-21 14:59:19 +00:00
Brian Gough
9b25374cd3
use time-based cleaning of event log
2019-03-21 14:59:19 +00:00
Brian Gough
befe4be517
add check for duplicate events
2019-03-19 14:22:11 +00:00
Henry Oswald
b9e3853a47
add sentry into settings.defaults
2019-03-05 17:33:52 +00:00
Henry Oswald
5119db43a7
Merge pull request #37 from sharelatex/ho-continual-pub-sub-traffic
...
setup continualPubsubTraffic to keep pub sub happy
2019-02-19 11:28:06 +00:00
Henry Oswald
26e903f384
setup continualPubsubTraffic
...
this keeps the pub sub channel ticking along happily
2019-02-15 17:04:49 +00:00
Chrystal Griffiths
507c4e5ce2
Fix test to accommodate changes to anonymous users
2019-02-15 15:18:17 +00:00
Chrystal Maria Griffiths
0b88a63444
Merge pull request #35 from sharelatex/cmg-anonymous-display-name
...
Nameless logged in user labelled as anonymous
2019-02-15 14:53:18 +00:00
Henry Oswald
6fb6086ba1
remove console.log
2019-02-12 14:28:42 +00:00
Chrystal Griffiths
26acdfd072
Add comment explaining why not sending anon data up
2019-02-12 14:06:59 +00:00
Chrystal Griffiths
bb06f82e04
Still send cursorData for logged in users
2019-02-12 14:00:47 +00:00
Chrystal Griffiths
2ec760403f
Revert to method not sending cursorData because of duplication
2019-02-11 11:52:14 +00:00
Chrystal Griffiths
cb12e1c6f6
Send an empty string for every nameless user
2019-02-08 15:39:51 +00:00
Henry Oswald
1fc1b4206e
add shutDownInProgress check into sig listening
2019-02-07 13:57:38 +00:00
Henry Oswald
d85bf5cedb
remove extra logging line
2019-02-06 15:26:12 +00:00
Henry Oswald
37d1c96051
add logging
2019-02-04 16:59:36 +00:00
Henry Oswald
a07e516f65
update redis key
2019-02-04 10:22:26 +00:00
Henry Oswald
0939a558d7
point real time to web api
2019-02-01 19:27:56 +00:00
Henry Oswald
6cdfd5b659
added http auth to config
2019-02-01 17:25:45 +00:00
Henry Oswald
23e0ce678e
call app real-time
2019-01-31 15:33:11 +00:00
Henry Oswald
2e46cfb3eb
bump node redis to 1.0.5
2019-01-25 16:38:42 +00:00
Henry Oswald
08e48afcb9
more logging
2019-01-25 10:57:36 +00:00
Henry Oswald
338bee061c
remove the cluster key as well
2019-01-25 10:50:34 +00:00
Henry Oswald
01d3d9d13e
remove natmap
2019-01-25 10:37:00 +00:00
Henry Oswald
2b1f67b6fa
remove natmap from defaults config
2019-01-25 10:30:31 +00:00
Henry Oswald
b193045a2a
log out real time settings
2019-01-25 10:04:26 +00:00
Henry Oswald
e1b742c215
add logging
2019-01-23 10:15:00 +00:00
Henry Oswald
73b2c1ec05
auto wrap redis from env vars
2019-01-23 10:11:26 +00:00
Henry Oswald
397b65abf7
put settings on all redis's
2019-01-22 17:06:43 +00:00
Henry Oswald
52014c851b
bump redis
2019-01-22 17:00:48 +00:00
Henry Oswald
2cd3e6f18f
added logging in settings
2019-01-22 16:49:22 +00:00
Henry Oswald
150483eece
put redis keys back in for web
2019-01-22 16:44:39 +00:00
Henry Oswald
9517aac86d
bump redis version
2019-01-22 16:02:13 +00:00
Henry Oswald
e3618acf20
mvp2 for redis-cluster
2019-01-22 15:53:24 +00:00
Christopher Hoskin
3288d6d321
Add **/*.map to .gitignore
2019-01-08 14:28:10 +00:00
Christopher Hoskin
4a3711aba8
Bump settings to v1.1.0
2019-01-08 14:26:05 +00:00
Christopher Hoskin
c6fa764a6a
Add app.js.map to .gitignore
2019-01-03 18:04:50 +00:00
Christopher Hoskin
b7e8bf3c4c
Bump logger to 1.5.7
2019-01-03 17:58:10 +00:00
Christopher Hoskin
cda65ad1ca
Bump build scripts to 1.1.10
2019-01-03 16:21:33 +00:00
Christopher Hoskin
cd362f22be
Move to v2 metrics
2019-01-03 16:17:31 +00:00
Christopher Hoskin
ba24e2686e
Merge branch 'master' into csh-ho-docker-issue-1338-bulk-upgrade
2019-01-03 16:08:40 +00:00
Christopher Hoskin
9e7f84cd0d
Bump node version to 6.15.1
2018-12-27 08:23:18 +00:00
Henry Oswald
bbd88e75eb
fix broken tests
2018-12-05 15:41:12 +00:00
Henry Oswald
7a7f1aed91
remove console.log
2018-12-05 15:39:27 +00:00
Henry Oswald
d4e8bc1d4b
remove metrics.set as we don't support it atm
2018-12-05 15:29:23 +00:00
Henry Oswald
5ad7482385
update config to take explicit redis configs
2018-12-05 14:43:45 +00:00
Henry Oswald
cdf605e171
inject metrics root and bump lib to 2.0.8
2018-12-05 14:01:15 +00:00
Henry Oswald
78b779a338
try different metrics
2018-12-04 16:21:20 +00:00
Henry Oswald
258617fbd4
bump metrics
2018-12-04 15:58:42 +00:00
Henry Oswald
fa3dd21d0c
Merge branch 'master' into ho-docker
2018-12-04 15:22:03 +00:00
Henry Oswald
b834049eeb
improve delay ms logging
2018-12-04 14:49:34 +00:00
Henry Oswald
05611de15e
use FORCE_DRAIN_MS_DELAY
2018-12-04 14:31:07 +00:00
Henry Oswald
2418e5db57
use delayExitUntilDrained
2018-12-04 14:22:06 +00:00
Henry Oswald
8073cdea75
improve logging
2018-12-04 14:17:59 +00:00
Henry Oswald
7f2decae4d
start drain after 3 hours
2018-12-04 14:06:39 +00:00
Henry Oswald
9a851d6cce
mvp for safe shutdown
2018-12-04 13:47:04 +00:00
Henry Oswald
fc2d2405f4
log out io clients
2018-12-04 13:39:16 +00:00
Henry Oswald
2282518c90
print out req.query
2018-12-04 13:26:47 +00:00
Henry Oswald
64f3d32c6c
log out status calls
2018-12-04 13:22:09 +00:00
Henry Oswald
034e627a8a
bump metrics and shrinkwrap
2018-12-04 13:14:50 +00:00
Henry Oswald
57cd7c734a
add debugging
2018-12-03 14:34:46 +00:00
Henry Oswald
ca2af0af32
make cookies configurable via env vars
2018-12-03 14:05:03 +00:00
Henry Oswald
bbc11ae1b5
add DOCUMENT_UPDATER_HOST as option
2018-10-19 19:42:33 +01:00
Henry Oswald
477c446ea8
add web-api host as ana option
2018-10-19 19:31:12 +01:00
Henry Oswald
63d7bb501b
return a 200 for root path for google health check
2018-10-19 16:44:40 +01:00
Alasdair Smith
4a495dbd1f
Use setting instead of hard-coding port
2018-10-09 11:53:49 +01:00
Henry Oswald
ff8afb6c24
pass redis port
2018-10-03 15:01:31 +01:00
Henry Oswald
e322e46900
update build scripts
2018-10-03 14:21:02 +01:00
Henry Oswald
3a89bf0957
pass redis password through as env var
2018-10-03 14:20:20 +01:00
Henry Oswald
327fa79f1c
update build scripts, acceptence tests now pass. includes dockerfile 1.1.3
2018-05-23 15:00:46 +01:00
Alberto Fernández Capel
8c10c737dc
Setup travis ci
2018-04-19 14:37:46 +01:00
James Allen
3d050f647b
Provide hosts as environment settings and add npm run start script
2017-12-29 08:15:32 +00:00
Shane Kilkelly
7295342ec2
fix existance checks for first_name and last_name
2017-12-18 11:13:19 +00:00
Shane Kilkelly
675814f1b1
Handle the case where the user has only a last_name set
2017-12-13 10:28:35 +00:00
Shane Kilkelly
06c8729ce7
If a user has only their first_name
set, don't label as Anonymous
2017-12-12 15:27:50 +00:00
Brian Gough
c8ad331551
fix unit tests
2017-11-13 09:41:04 +00:00
Brian Gough
b734f7a3f7
convert errors to warnings
2017-11-10 15:01:23 +00:00
Shane Kilkelly
3b39464aa5
Merge branch 'master' into sk-unlisted-projects
2017-11-02 10:58:41 +00:00
Brian Gough
5c8291a8da
fix sentry initialisation
2017-10-30 16:14:44 +00:00
Brian Gough
009f8a3eae
add sentry support
2017-10-30 16:14:29 +00:00
Brian Gough
17ac7719c3
Merge pull request #23 from sharelatex/bg-upgrade-ioredis
...
upgrade ioredis
2017-10-30 14:06:18 +00:00
Brian Gough
0568aada17
upgrade to node 6
2017-10-30 13:46:37 +00:00
Brian Gough
cc118fa230
remove unnecessary ioredis package
2017-10-30 13:44:09 +00:00
Brian Gough
510ee6bf4f
use ioredis 3 via redis-sharelatex
2017-10-30 13:43:36 +00:00
Shane Kilkelly
c5e602c0a9
Fix typo
2017-10-26 16:00:06 +01:00
Brian Gough
168d646328
exit if mock servers fail to start
2017-10-20 15:19:20 +01:00
Shane Kilkelly
76673d5f0a
Change anonToken
to anonymousAccessToken
2017-10-20 10:10:58 +01:00
Shane Kilkelly
438bb28c04
Get anonToken from joinProject payload
2017-09-29 16:32:46 +01:00
Shane Kilkelly
d4c735c3ea
Pass anonymous-read token along as header to web-api
2017-09-26 14:21:41 +01:00
Alasdair Smith
6470577c3f
Add acceptance tests for joinDoc variadic
2017-09-22 11:01:11 +01:00
Alasdair Smith
785d6e2eea
Add tests for comment & change encoding
2017-09-22 10:56:08 +01:00
Alasdair Smith
b8d3f34e54
Fix joinDoc tests not passing options arg and restructure tests
2017-09-22 10:56:08 +01:00
Alasdair Smith
ed252db25e
Merge pull request #18 from sharelatex/as-encode-ranges
...
Encoding changes & comments in ranges
2017-09-22 09:48:42 +01:00
Alasdair Smith
a0505afb23
Be defensive on comment text
2017-09-22 09:34:10 +01:00
Alasdair Smith
c67150ea10
Ensure falsy value doesn't fail conditional
2017-09-22 09:33:29 +01:00
Alasdair Smith
937bf82a2f
Return callback with guard
2017-09-22 09:25:24 +01:00
Alasdair Smith
5d8e201732
Don't return obj
2017-09-21 16:58:03 +01:00
Alasdair Smith
a299d7335d
Fix incorrect var
2017-09-21 16:56:18 +01:00
Alasdair Smith
90d05dc6dd
Make args order consistent
2017-09-21 16:56:09 +01:00
Alasdair Smith
3966e2f85b
Make variadic options more explicit
2017-09-21 16:55:49 +01:00
Alasdair Smith
790b9ea8ed
Switch order of args
2017-09-21 15:19:19 +01:00
Alasdair Smith
55c880e1dd
DRY up a bit
2017-09-21 15:07:15 +01:00
Alasdair Smith
b796879c9f
Handle options not being passed
2017-09-21 14:58:49 +01:00
Alasdair Smith
aa6e0d0d69
Only encode ranges if option passed
2017-09-21 14:23:16 +01:00
Alasdair Smith
9f503f1e9f
First pass at encoding changes & comments in ranges
2017-09-21 13:25:55 +01:00
Joe Green
dc8f4ffc2a
Update Jenkinsfile
2017-09-21 11:03:07 +01:00
Joe Green
0b41d32cbb
Update Jenkinsfile
2017-09-21 10:59:41 +01:00
Joe Green
72ef354206
build.txt
2017-09-04 14:54:05 +01:00
Joe Green
3dae68a4f0
Create Jenkinsfile
2017-08-11 14:24:46 +01:00
Brian Gough
ab6fe1d948
check for null bytes from JSON.stringify
2017-06-01 11:27:56 +01:00
James Allen
642134da79
Don't return a user if there is no entry
...
ioredis returns a blank object, {}, if there is no key with hgetall.
Previously, node-redis returned nil. So we need to check for a blank
object as well as a nil object.
2017-05-16 11:06:05 +01:00
James Allen
a8917b933f
Remove multi call to make compatible with redis-cluster
2017-05-11 17:27:28 +01:00
James Allen
01d0b63f2c
Update config for websessions
2017-05-10 15:52:35 +01:00
James Allen
d04be1c000
Update redis-sharelatex
2017-05-09 17:09:00 +01:00
James Allen
720f24427a
Use new redis-sharelatex with support for cluster
2017-05-02 15:51:17 +01:00
Shane Kilkelly
ed76d57bf8
Add a .nvmrc file
2017-03-27 14:51:46 +01:00
James Allen
d8ff8ba098
Merge pull request #11 from sharelatex/ja-allow-readonly-comments
...
Allow readonly users to submit comments
2017-03-20 14:25:03 +00:00
James Allen
8766646149
Allow users to send a comment update if they are read-only
2017-03-15 15:45:52 +00:00
James Allen
d939f6cd65
Remove some old logging
2017-03-15 15:45:18 +00:00
Brian Gough
d468f662ac
handle disconnects of unauthenticated users
2017-02-23 12:04:36 +00:00
Shane Kilkelly
50930cd7b1
Don't npm rebuild inside container
2017-02-20 10:14:41 +00:00
James Allen
9fd099c24f
Update getDoc signature to match reality
2017-01-16 17:09:44 +01:00
James Allen
f66d631886
Merge branch 'master' into ja-track-changes
2017-01-13 13:40:42 +01:00
Brian Gough
e5160d9a36
log client id when disconnecting on otUpdateError
...
only log errors for connected clients
2016-12-16 14:43:51 +00:00
James Allen
bf2620ee0c
Return ranges from docupdater to client
2016-12-08 11:37:31 +00:00
James Allen
5d377713d6
Try to fix issue with acceptance tests timing out
2016-12-08 11:25:25 +00:00
James Allen
7bade0a8bb
Merge branch 'master' of github.com:sharelatex/real-time-sharelatex
2016-12-08 11:16:22 +00:00
James Allen
9cf0eb5540
Add in acceptance test script
2016-12-08 11:14:27 +00:00
James Allen
4cff89becc
Fix acceptance tests
2016-12-08 11:12:07 +00:00
Shane Kilkelly
de18231ef1
clarify purpose of redis client
2016-11-09 12:09:15 +00:00
Shane Kilkelly
41868ddda3
Make real-time work with web sessions in redis-cluster
2016-11-09 12:06:32 +00:00
Brian Gough
2e0f5b74db
send connectionAccepted/Rejected events on connect
...
let the client know whether it has successfully authenticated
2016-10-28 15:41:57 +01:00
James Allen
6fa2a81baf
Make breakout logic after draining N clients more clear
2016-10-24 16:54:56 +01:00
James Allen
7107d9adcd
Delete logging that will be noisy in production
2016-10-24 16:40:10 +01:00
James Allen
59d042e264
Add end point to start draining clients
2016-10-24 16:36:09 +01:00
Shane Kilkelly
185bc7e635
Update session code
2016-09-07 08:58:35 +01:00
Brian Gough
8ffec68250
add comment about fallback case
2016-09-05 12:46:52 +01:00
Brian Gough
ef85bce3b8
track permissions when clients join and leave docs
2016-09-05 12:46:52 +01:00
Brian Gough
9ab19c5d03
avoid double callback
2016-09-02 16:34:14 +01:00
James Allen
51939512ac
Return semantic error if doc ops range is not loaded
2016-05-31 14:21:23 +01:00
James Allen
f4a465ea69
Return a 'not authorized' error if the user is not logged in/authorized
2016-05-31 11:49:51 +01:00
James Allen
343ec9d708
Add in flags that track how often each callback is called
2016-05-26 15:46:45 +01:00
James Allen
030abc5340
Don't flush to track changes now that this happens in doc updater
2016-01-20 17:51:24 +00:00
James Allen
b28e5ac6b2
Use configurable app name if present
2015-12-07 11:49:55 +00:00
James Allen
73cd1a3e92
Use latest version of metrics with suitable event loop monitoring
2015-12-03 16:50:56 +00:00
James Allen
5b17764da2
Pin down logger version number
2015-12-01 17:28:26 +00:00
James Allen
3580e3ba6b
Update to latest logger
2015-12-01 17:18:45 +00:00
James Allen
830d676f4f
Add in limit on all JSON parsing
2015-12-01 11:05:49 +00:00
James Allen
92d18d7e2e
Reduce limit to actuall 1Mb, not 1Gb
2015-11-30 15:40:03 +00:00
James Allen
0372fa3203
Add in extra logging about size of messages
2015-11-30 15:25:09 +00:00
James Allen
503b766dcc
For duplicate ops only send ack to submitting client
...
When a duplicate op is received, we only need to ack it to client
that sent it. Only that client is having trouble, and all other clients
will already have received it.
2015-11-19 10:58:28 +00:00
James Allen
669cb0c085
Merge branch 'master' of github.com:sharelatex/real-time-sharelatex
2015-08-31 14:04:59 +01:00
James Allen
da28b0fc70
Use updated metrics with unlimited socket config
2015-08-31 14:04:54 +01:00
Henry Oswald
3c70acd560
added metrics into realtime around doc update manager
2015-08-29 08:26:16 +01:00
James Allen
d79793c34f
Monitor get document times
2015-08-29 08:22:43 +01:00
Henry Oswald
42e7d5d4b6
make startup message consistent
2015-04-30 15:05:31 +01:00
James Allen
985abe42fe
Release version 0.1.4
2015-03-20 14:21:17 +00:00
James Allen
5da5c5c435
Accept arrays of messages to send to client
2015-03-12 14:32:35 +00:00
James Allen
536118b0cf
Relay messages received via HTTP into the project
2015-03-03 17:15:19 +00:00
James Allen
5ee71a423d
Release version 0.1.3
2015-02-26 11:23:01 +00:00
James Allen
f0462f0b1f
Bump version to 0.1.2
2015-02-10 13:14:13 +00:00
David Renshaw
f72fa9de34
'request' is a production dependency
2015-02-09 17:34:01 -05:00
James Allen
79cd0e6a5c
Record user id correctly when updating position
2015-02-05 13:41:31 +00:00
James Allen
99ac814c7d
Truncate error stack traces to 10 lines
2014-11-25 09:17:26 +00:00
James Allen
7a9f7f0870
Don't print massive stack trace when there is no room_id
2014-11-24 22:28:50 +00:00
James Allen
d62dc7ca3a
Don't be so verbose with client update errors
2014-11-24 15:42:26 +00:00
James Allen
43a008c0bc
Stub logger in unit tests
2014-11-24 15:42:13 +00:00
James Allen
0ed7d0c811
Ignore messages with null room_id
2014-11-24 12:09:12 +00:00
James Allen
57a34e940e
Authorize users before updating their cursor positions
2014-11-24 12:05:05 +00:00
James Allen
a48c8aad92
Support anonymous access
2014-11-21 11:48:59 +00:00
James Allen
2a05045600
Add in redis health check
2014-11-20 16:56:09 +00:00
James Allen
4d691cf543
Delete client.coffee
2014-11-17 15:09:55 +00:00
James Allen
cddb4e7279
Add cookie parser dependency
2014-11-17 15:01:37 +00:00
James Allen
2cb365d2b4
Add /status end point
2014-11-17 14:38:43 +00:00
James Allen
14ace64bc6
Ignore grunt forever output
2014-11-17 14:35:32 +00:00
James Allen
ce587a00ba
Send web requests with HTTP auth
2014-11-17 14:35:07 +00:00
James Allen
66dfafdebe
Add metrics into all end points
2014-11-17 13:12:49 +00:00
James Allen
8bc6d0e291
Unify logging
2014-11-17 12:46:27 +00:00
James Allen
7b275e9e0e
Add acceptence tests for leaving(disconnecting) from a project
2014-11-17 12:23:30 +00:00
James Allen
80b7875414
Add in leaveProject handler
2014-11-14 16:51:55 +00:00
James Allen
fd56655529
Add in track changes and doc updater flushing calls
2014-11-14 15:53:59 +00:00
James Allen
347ceaaf03
Listen for updates from doc updater and send them to clients
2014-11-14 15:30:18 +00:00
James Allen
b6f51fdafd
Refactor acceptance tests to wait for connection before proceeding
2014-11-14 10:21:54 +00:00
James Allen
fef5f6b775
Add acceptance tests for applyOtUpdate
2014-11-14 10:12:35 +00:00
James Allen
f0e69bfe2d
Add appltOtUpdate end point (sans acceptance tests for now)
2014-11-13 17:07:05 +00:00
James Allen
cc1c85ebf8
Distribute server side socket.io updates over Redis Pub/Sub
2014-11-13 16:03:37 +00:00
James Allen
e769819521
Add in clientTracking.updatePosition end point
2014-11-13 15:27:18 +00:00
James Allen
84778b5961
Mark user as connected for cursor updates when joining project
2014-11-13 13:05:49 +00:00
James Allen
f7482014ce
Import ConnectedUsersManager from web
2014-11-13 12:27:46 +00:00
James Allen
6ed2a0d04d
Refactor client attribute fetching and logging
2014-11-13 12:03:43 +00:00
James Allen
431abdc6eb
Add leaveDoc acceptance tests
2014-11-13 11:54:10 +00:00
James Allen
0b18edeff3
Add in /clients and /client/:client_id status end points
2014-11-13 11:48:49 +00:00
James Allen
8b923d2fda
Add in leaveDoc end point
2014-11-12 16:51:48 +00:00
James Allen
eb8ccc0298
Create joinDoc socket.io end point
2014-11-12 15:54:55 +00:00
James Allen
919b192e16
Add in null check
2014-11-10 11:40:19 +00:00
James Allen
dc60f2b736
Add acceptance test for unauthorized project joining
2014-11-10 11:38:26 +00:00
James Allen
02c0a3a867
Create joinProject socket.io endpoint
2014-11-10 11:27:08 +00:00
James Allen
fbf983c2ff
Create framework for real-time API with session authentication
2014-11-07 17:38:12 +00:00