Bill Currie
5bf5278c2b
pr_comp.h:
...
- new opcodes for pointers
progs.h:
- prototype PR_Check_Opcodes
pr_edict.c:
- move the static bounds checking to PR_Check_Opcodes in pr_opcode.c
pr_exec.c:
- vector instruction cleanup
- temporarily nuke bounds checking from storep.*
- move base of address results from pr->edicts to pr->pr_globals
- implement new pointer related instructions
- nuke proposed global pointer instructions (not flexible enough)
pr_opcode.c:
- add new pointer instuctions
- re-implement static bounds/invalid opcode checking. no more multiple
case statements to keep track of.
2001-11-02 22:41:11 +00:00
Ragnvald Maartmann-Moe IV
08a211385f
Optimize some redundant math out of the particle aging loop.
2001-11-02 21:12:09 +00:00
Ragnvald Maartmann-Moe IV
3958b4a4b3
Age particle trails based on position in trail, during creation.
2001-11-02 20:47:47 +00:00
Bill Currie
7b4e5e69af
now actually works (especially for double scan modes and the like)
2001-11-02 06:43:41 +00:00
Ragnvald Maartmann-Moe IV
c19c237e0e
Whitespace.
2001-11-02 06:35:32 +00:00
Bill Currie
a98c5bb4c1
fix vid_fullscreen toggling (sgl) and archiving (all)
2001-11-02 06:11:32 +00:00
Bill Currie
166ce6d8ce
redundant code removal
2001-11-02 03:04:01 +00:00
Bill Currie
a45b78b622
make all 8 X buffers available. no args uses the default buffer, giving 0-7
...
as an agument to in_paste_buffer specifies which buffer to use.
2001-11-01 22:52:22 +00:00
Bill Currie
fa976d4461
cvarlist cfg will now give output suitable for a config file
2001-10-30 23:33:47 +00:00
Bill Currie
9b8995b836
fix win32's missing clipboard support (bringing it back). some trickery will
...
be required to get ctrl-V working, but... *shrug*
2001-10-30 22:46:15 +00:00
Ragnvald Maartmann-Moe IV
d1c115da05
Whitespace.
2001-10-30 19:58:01 +00:00
Ragnvald Maartmann-Moe IV
7ea1051b9a
Code cleanups.
2001-10-30 19:55:34 +00:00
Ragnvald Maartmann-Moe IV
3ad79cc970
Change particle limit from a short to an unsigned int. Possibly a tiny speedup, also allows for absurd particle counts...
2001-10-30 19:42:29 +00:00
Bill Currie
4685fccbac
new command for -x11 and -glx: in_paste_buffer (eg in_bind imt_console
...
m_button3 in_paste_buffer). Makes X's clipboard available to quake (for
pasting:)
2001-10-30 18:20:56 +00:00
Bill Currie
8ae3ef9482
fix some warning in solaris
2001-10-30 16:41:21 +00:00
Bill Currie
d835b79352
this might fix the black screen in 8 bit X
2001-10-29 22:29:42 +00:00
Bill Currie
00514d744e
this should fix the skating statues
2001-10-29 19:38:20 +00:00
Bill Currie
85c9e0ab1e
more externs cleaned up
2001-10-29 17:46:03 +00:00
Bill Currie
8071e8398a
put a couple externs back for win32. they need a bit more thought on how to
...
arrange things.
2001-10-29 16:45:03 +00:00
Bill Currie
1d442c496f
setup the colormap /before/ calling Vid_InitGamma so VID_SetPalette gets
...
called with a valid colormap to update.
2001-10-29 06:46:46 +00:00
Bill Currie
3ce8029f74
fix a silly goof with the models
2001-10-28 05:43:53 +00:00
Bill Currie
ccfe82cda4
*taniwha mops up the last drops of blood from extern
2001-10-28 04:38:24 +00:00
Bill Currie
78a3e398d5
* taniwha gets medieval on extern
2001-10-28 04:23:37 +00:00
Ragnvald Maartmann-Moe IV
5afce455df
Undo taniwha's debugging insanity.
...
If you want to test for injecting more particles than can fit in the list, particle_new is the right place for the test. It's even there already, just commented out.
2001-10-28 00:47:21 +00:00
Bill Currie
10d83e090a
externs in .c files are evil, evil evil (ok, so I haven't cleaned these ones
...
out yet:P). This fixes the recent GL crash.
2001-10-27 22:27:32 +00:00
Bill Currie
3601b5ba35
fix the minor breakage were /no/ particles were being generated
2001-10-27 21:39:58 +00:00
Bill Currie
74d3499f74
fix a seg caused by my changes from last night
2001-10-27 20:52:33 +00:00
Bill Currie
014785a9f2
lots of error checking for our phantom particle bug, but I was unable to
...
trigger it after 2h of play using the previous changes
2001-10-27 08:32:52 +00:00
Bill Currie
d9fd8dc29f
make r_particles truely a flag and call R_MaxParticlesCheck when r_particles
...
changes
2001-10-27 08:31:45 +00:00
Brian Koropoff
05f35f9cd4
This adds the ability to access special characters in console commands by proceeding certain characters with $. See libs/util/cmd.c for the conversion table. Preceeding a character by # will shift it up or down by 128, which basically is useful for accessing the brown letters and numbers. All special characters were removed from Team_ParseSay, and variable substitution now takes the form of ${var} to prevent conflicts with special character substitution. Special character access is controlled by cmd_highchars, which defaults to off.
2001-10-27 04:34:53 +00:00
Bill Currie
1fab17ab33
d'oh. must read the clode closer :P
2001-10-26 05:31:39 +00:00
Bill Currie
6bbb9a75a3
remove an unneeded check
2001-10-26 03:12:31 +00:00
Adam Olsen
0a6ae4f36f
- some strlen checking for strcpy. I don't feel like doing the rest
...
of the codebase :)
2001-10-26 00:20:00 +00:00
Bill Currie
f8a41cb1bc
completely nuke the concept of "priority" from opcodes and use get_op_string
...
in emit_sub_expr instead of a redundant switch.
2001-10-25 17:48:35 +00:00
Adam Olsen
3bba5398ba
- audit malloc usage. now everything checks the return value :)
2001-10-24 22:50:06 +00:00
Bill Currie
552a486d87
fix the libQFrenderer_sw.lai installation error. libtool requires -rpath
...
for /any/ installed lib, static or not.
2001-10-24 17:54:56 +00:00
Adam Olsen
dd19f7b500
- convert svc_deltapacketentities
...
- add a Host_NetError that dumps a packet log and disconnects, and use
it instead of Host_EndGame in most cases
- fix a couple multiply-defined vars
2001-10-24 15:23:02 +00:00
Bill Currie
9c92634cbf
remove an extern
2001-10-24 15:02:18 +00:00
Bill Currie
8e9505c100
/finally/ get asm in the sw renderer when not using --disable-shared. libtool
...
was using the wrong objects.
2001-10-23 18:48:49 +00:00
Bill Currie
fedea4a5e1
check for malloc failure
2001-10-23 17:35:46 +00:00
Bill Currie
bf309fb554
split the sprite and alias model rendering code out from gl_rmain.c into
...
their own files.
2001-10-23 17:20:56 +00:00
Bill Currie
6a5e3edcf7
and extern fixes for the windows side
2001-10-23 17:11:48 +00:00
Bill Currie
b5341f0d13
we now compile and link with -fno-common. this cleans up the multiple,
...
uninitialized declarations of variables.
2001-10-23 16:55:23 +00:00
Bill Currie
fa95bd35aa
fix a really stupid brainfart that caused shift states to not work
2001-10-23 01:53:51 +00:00
Bill Currie
b6ad2223d2
attempt to handle the byte swapping of screenshots seen on voodoo2s in
...
windows
2001-10-22 19:46:34 +00:00
Bill Currie
1d697dc90d
give in_win keyboard shift states for ascii conversions
2001-10-22 16:07:26 +00:00
Bill Currie
3252ee3eb6
fix the mangled key codes
2001-10-22 05:07:15 +00:00
Bill Currie
52252616ff
pull the input code out of vid_wgl into in_win
2001-10-22 04:13:56 +00:00
Bill Currie
82aa0fde58
fix -wgl's keyboard input
2001-10-22 02:33:19 +00:00
Bill Currie
9a5ec9c187
ok, qw-client-wgl.exe works now (helps if scr_width and scr_height are set)
2001-10-22 02:15:30 +00:00
Chris Ison
2467671c72
removal of tdfx_brighten in preparation for gl_brighten
2001-10-21 21:29:54 +00:00
Bill Currie
e1fc77dd2b
fix a crasher in win32. I don't know if linux crashed, but it should have.
2001-10-21 03:48:02 +00:00
Bill Currie
b3914eeaaa
elimination of bare printf (with some exceptions) from libs: Sys_Printf is
...
used instead
2001-10-18 16:42:14 +00:00
Bill Currie
6c0d760102
msg.h:
...
give mst_t a buffer to hold unterminated message strings
kill MSG_ReadStaticString and MSG_ReadStringLine
msg.c:
kill MSG_ReadStaticString and MSG_ReadStringLine
MSG_ReadString: implement the buffer for unterminated message strings
and update readcount on badread
cl_main.c:
go back to MSG_ReadString and fix up the resulting const char * issues
cl_parse.c:
rewrite the cl_mofake code all because of an uninitialized variable :)
sv_main.c:
use MSG_ReadString instead of MSG_ReadStringLine because
Cmd_TokenizeString really doesn't care about a terminating \n
2001-10-18 06:23:26 +00:00
Adam Olsen
18036b63d9
- change MSG_ReadString to return const char * and return a pointer
...
directly into the packet data.
- change a bunch of char *'s to const char *'s for the above. Only
thing that had trouble was the cl_nofake handler, which I changed to
use a local buffer.
- add MSG_ReadStaticString which acts like the old MSG_ReadString,
specifically that it uses a static buffer and tollerates
unterminated strings.
- add a Q_strnlen function, and make strnlen use it if strnlen is
undefined.
- Add a net_svc.h and net_svc.c which will preparse svc messages into
structs, for easier handling. Currently only soundlist and
modellist are done.
2001-10-18 04:44:58 +00:00
Bill Currie
1b1955551a
make all the multi-byte MSG_Read* functions update msg->readcount when the
...
end of the buffer is hit so subsequent MSG_Read* calls for smaller values
error as well. Also add a check for badread in MSG_ReadFloat
2001-10-18 04:14:18 +00:00
Bill Currie
e765321452
wgl funcs are likely GLAPIENTRY type too :)
2001-10-16 22:37:11 +00:00
Bill Currie
2d068c0745
massive windows.h and WIN32 cleanup.
2001-10-16 21:40:45 +00:00
Bill Currie
f18974bd89
fix a missing sys/types.h
2001-10-16 16:25:32 +00:00
Jeff Teunissen
ce740fb4ec
Joystick target fixed.
2001-10-16 05:06:31 +00:00
Bill Currie
8417d23a94
fix a nasty seg on gl startup causes by looped function pointers
2001-10-16 04:11:25 +00:00
Bill Currie
376a9105fa
oops
2001-10-15 23:16:42 +00:00
Bill Currie
3402dfd51a
libasm improvements
2001-10-15 23:09:03 +00:00
Bill Currie
4a0194b95c
correct the default of cmd_warncmd
2001-10-15 22:41:42 +00:00
Jeff Teunissen
2e4d8d1473
Makefile fixes -- video driver libs are gone.
2001-10-15 22:32:28 +00:00
Jeff Teunissen
10424a5015
*** empty log message ***
2001-10-15 22:28:05 +00:00
Bill Currie
460a270a54
fix some init order issues brought up by the new gl_funcs.c code.
2001-10-15 19:06:22 +00:00
Bill Currie
fd25261ab3
hopefully better win32 dynamicly loaded gl support. if nothing else,
...
gl_funcs.c is easier to read :)
2001-10-15 18:24:30 +00:00
Bill Currie
1ffb050bf9
and a memleak fix from _Muz_
2001-10-15 17:41:53 +00:00
Bill Currie
7e0f676705
xmms info and session id patch from _Muz_
2001-10-15 17:37:05 +00:00
Bill Currie
41d01d54f9
put the INITGUID definition in the correct place
2001-10-15 17:32:43 +00:00
Bill Currie
f7b82bcb69
comment out the definition of INITGUID for now as it's causing linking problems
2001-10-15 16:30:15 +00:00
Jeff Teunissen
0485fbe09e
Makefile fixes.
2001-10-14 07:05:06 +00:00
Bill Currie
2dafd4a496
remove some (int) casts
2001-10-12 23:14:59 +00:00
Bill Currie
e97e06fe44
byte to int + xmms playlist support from _Muz_
2001-10-12 19:26:56 +00:00
Bill Currie
0952af5529
fix up the sound restart code
2001-10-12 15:49:50 +00:00
Bill Currie
62873d6980
diff snr --
2001-10-11 17:31:41 +00:00
Bill Currie
49fe4e9f05
fix a misplaced s&r
2001-10-11 06:54:29 +00:00
Bill Currie
742bb9de91
static plugins now actually work
2001-10-10 16:22:41 +00:00
Bill Currie
8b2da8cbec
make the static plugins link properly with older libtool
2001-10-10 15:44:35 +00:00
Bill Currie
eee1aaf283
static plugins (--with-static-plugins to force on, --without-static-plugins
...
to force off, defaults to off for *nix and on for win32). does not work yet
due to lack of support in libs/util/plugin.c, but that's next.
2001-10-10 05:52:14 +00:00
Ragnvald Maartmann-Moe IV
1674e6a763
Clean up of models that are always fullbright.
2001-10-10 05:00:30 +00:00
Ragnvald Maartmann-Moe IV
db87121c2b
Whitespace.
2001-10-10 04:59:43 +00:00
Ragnvald Maartmann-Moe IV
86a82b895d
Whitespace.
2001-10-09 21:57:49 +00:00
Bill Currie
a65d98a35c
r_dlight_max can now safely be 0
2001-10-09 21:50:51 +00:00
Chris Ison
fda073acb6
oops audio targets makefile fix
2001-10-09 21:43:01 +00:00
Chris Ison
15bdd4ad67
disabled -lm checking for cygwin and mingw32 and added plugin_LDFLAGS and plugin_LIBADD for win32 builds
2001-10-09 21:36:57 +00:00
Ragnvald Maartmann-Moe IV
9cc671e6d2
Try #2 .
...
Change r_maxparticles from short to unsigned int.
Make MAX_DLIGHTS into a cvar, r_dlight_max that sets the unsigned int r_maxdlights.
2001-10-09 20:35:17 +00:00
Bill Currie
36508058ea
QFPLUGIN now does the __declspec stuff and all plugins now use it on their
...
plgin info function. doesn't actually /work/ yet :(
2001-10-08 05:54:46 +00:00
Bill Currie
3a366f4f7e
break out the backtrace code from PR_RunError into PR_DumpState and use
...
PR_DumpState instead of PR_RunError in seg_fault_handler so we get both a
progs trace /and/ a core file (ulimit allowing)
2001-10-08 03:46:44 +00:00
Chris Ison
2f8efd7360
changes to get mingw32 sw clients to compile under cygwin
2001-10-07 12:45:47 +00:00
Bill Currie
757a0f690c
fix a missing #ifdef HAVE_VIDMODE
2001-10-06 22:57:54 +00:00
Ragnvald Maartmann-Moe IV
24e80b21d4
Whitespace. Hiding commented out code is bad.
2001-10-06 01:14:23 +00:00
Ragnvald Maartmann-Moe IV
d657a590b5
Clean up extern functions, update noise_diamondsquare to match LordHavoc's fractalnoise.
2001-10-06 00:39:22 +00:00
Ragnvald Maartmann-Moe IV
8afd4a870e
Revert an optimization that impacts legibility more than performance.
2001-10-06 00:31:57 +00:00
Bill Currie
7794acec66
clean up args for execvp
2001-10-05 21:09:48 +00:00
Bill Currie
042a036964
pass through indent and then clean up after some of indent's insanity
2001-10-05 20:29:55 +00:00
Bill Currie
936b70fe41
remove dependency on net_socket so cd_xmms works with nq as well as qw. Seems
...
to cause alsa some grief which is rather suprising as file decriptor counts
should have taken care of that nicely.
2001-10-05 20:06:48 +00:00
Bill Currie
44fc52bbb6
move the xmms command from cd.c to cd_xmms.c and have the cd command always
...
available
2001-10-05 19:52:56 +00:00
Bill Currie
a39ccf4a34
XMMS support from _Muz_ (Alexis Paul Musgrave <muz@cwcom.net>)
2001-10-05 19:36:35 +00:00
Ragnvald Maartmann-Moe IV
9daba0eef7
GL string and character rendering speed up and clean up.
2001-10-05 19:01:57 +00:00
Ragnvald Maartmann-Moe IV
72b198d650
Minor cleanup.
2001-10-05 18:55:40 +00:00
Adam Olsen
4937ad6c71
- some changes to snd_win.c that will hopefully bring it closer to
...
operation
2001-10-05 09:51:21 +00:00
Adam Olsen
0785610296
- fix a little mistake in SV_PrintToClient that'd cause it to
...
segfault if your first call was with "". Probably could cause
crashes too
- add a string.c file to libQFutil, with a Q_strcasestr function,
which strcasestr is defined to if it's not already defined. (we'd
get that with glibc if we defined __USE_GNU, but we don't)
- make client_t and SV_ExtractFromUserinfo both use NAME_MAX for
their name arrays, instead of 32 for one and 80 for the other
- rewrite almost all of SV_ExtractFromUserinfo's name handling.
- \r, \n, and \t are all converted to spaces
- leading/trailing spaces are stripped
- consecutive spaces are reduced to a single space
- empty names are considered bad
- user-* nicks are considered bad (unless forced to them)
- a name containing console or admin is considered bad
- a name that already exists is considered bad
- if they have a bad name it gets forced to user-%d, where %d is
their userid
- netname in the progs is now updated properly
- name changes are always reported unless it's the initial setting,
rather than only if they're full connected and not a spectator
- finally, if the name change fails (info string exceeded), give
them the boot. (before this was only done for duplicate names)
That's about it :)
2001-10-04 19:11:39 +00:00
Bill Currie
1929797cc9
get nq-server so it runs. part of this involved renaming cl_warncmd to
...
cmd_warncmd
2001-10-03 21:25:43 +00:00
Bill Currie
f2cc8d9640
fix a seg when the buffer wraps
2001-10-03 21:24:52 +00:00
Bill Currie
a1d2cf3532
duplicate file name cleanup and make dist works
2001-10-03 17:50:36 +00:00
Bill Currie
87e59c0762
finally got sw's Makefile.am working too
2001-10-03 14:59:43 +00:00
Bill Currie
9aca46416c
ok, sw32's Makefile.am now works with both 1.4 and 1.5
2001-10-03 14:49:14 +00:00
Bill Currie
95d3600452
fix skybox/skydom map vis issues. I hope this works on all drivers.
2001-10-03 02:51:30 +00:00
Bill Currie
c3735506c7
hey, I think this one is going to work!!!
2001-10-03 00:07:01 +00:00
Ragnvald Maartmann-Moe IV
9c6955f406
Fix missing include.
2001-10-02 23:53:07 +00:00
Bill Currie
40d0490b7c
add Hash_GetList to get a list of elements in the hash table (unsorted)
2001-10-02 23:17:25 +00:00
Bill Currie
081a44e5bc
this works a smidge better
2001-10-02 23:13:54 +00:00
Bill Currie
b866bcae61
seems automake isn't too happy about nested conditionals and main vars
2001-10-02 22:36:08 +00:00
Ragnvald Maartmann-Moe IV
256f6e94c1
Broken attempt at cleaning up Makefile.am's, for taniwha's perusal.
2001-10-02 22:02:10 +00:00
Bill Currie
4699bf6d5b
files under inclue/QF are not allowed to include files from include (eg,
...
including config.h is a nono).
2001-10-02 21:14:11 +00:00
Bill Currie
8c6e5456bb
type b of not.i is void, not integer
2001-10-02 19:17:18 +00:00
Bill Currie
fcdc975bdd
fix a thinko that prevented the cd command from being added
2001-10-02 18:12:27 +00:00
Ragnvald Maartmann-Moe IV
9c778bb539
Minor tweak of lightning sparks and teleport appearances, fix brief breakage of gl_sky_clip 1 & 2 with skyboxes.
2001-10-02 09:11:20 +00:00
Ragnvald Maartmann-Moe IV
9c21edc6d0
Whitespace.
2001-10-02 06:58:44 +00:00
Ragnvald Maartmann-Moe IV
820fcbb8d2
R_Mirror-related cleanups, and some whitespace.
2001-10-02 06:13:22 +00:00
Bill Currie
86f326c9d1
remove an ancient clean target that's no longer needed
2001-10-02 05:23:17 +00:00
Adam Olsen
362e4eefc9
- make the fallback console use stdin
...
- don't draw scores overlay if the screen is less than 244 wide.
2001-10-02 03:24:36 +00:00
Ragnvald Maartmann-Moe IV
5e6f77cddb
Instead of glEnable/glDisable (GL_ALPHA_TEST) pairs for every sprite rendered, let's do it once for the entire sprite loop. Minor hit when there are no sprites, but 2+ it's a gain. Better worst case, rather than better peak performance.
2001-10-02 01:48:51 +00:00
Ragnvald Maartmann-Moe IV
63ac10dfde
Clean up glDepthFunc and glDepthRange so it's properly initted, and not set needlessly every frame.
2001-10-02 00:01:05 +00:00
Ragnvald Maartmann-Moe IV
4b3c4e1eaf
Whitespace.
2001-10-01 21:52:05 +00:00
Ragnvald Maartmann-Moe IV
fce4b903eb
Fix double joystick init in sdl targets.
2001-10-01 21:50:35 +00:00
Bill Currie
a4714175dd
update the screen directly when printing rather than using C_DrawOutput.
...
Resizing still seems to work updates are much faster.
2001-10-01 16:09:06 +00:00
Bill Currie
77cf9439d0
getting closer to a properly resizing console
2001-10-01 06:49:59 +00:00
Bill Currie
f505e8630c
fixes for rh 7.1
2001-09-30 23:24:53 +00:00
Chris Ison
b0dc19310a
more compile under cygwin patches
2001-09-30 13:05:20 +00:00
Bill Currie
53529ae940
output window now updates when resizing, but it doesn't /quit/ work properly
...
(issue with starting line).
2001-09-30 05:59:33 +00:00
Chris Ison
60107fd19c
changes to get cygwin to compile server. still debugging result
2001-09-29 09:39:27 +00:00
Bill Currie
138a4a1c14
rename console_t to old_console_t in preparation for a better version and
...
temporarily disable the client console plugin as it currently doesn't
compile.
2001-09-29 04:24:04 +00:00
Adam Olsen
e12f1dcf9e
- boundscheck static progs strings, and give proper errors for that
...
and dynamic strings if it fails.
2001-09-28 23:34:49 +00:00
Bill Currie
f0244bece2
update the status bar on resize
2001-09-28 23:10:15 +00:00
Bill Currie
c7031b20f3
move vid_fullcreen definition from *.c to vid.c and declaration from
...
context_x11.h to vid.h and remove all extern decls from *.c
2001-09-28 16:54:31 +00:00
Bill Currie
8e27422c72
partial fixes for mingw cross builds. still have issues with ar :(
2001-09-28 16:03:45 +00:00
Bill Currie
30f6d2f85c
fix a case and paste error
2001-09-28 15:29:56 +00:00
Jeff Teunissen
d63243380f
Aaaaaaand, it's done!
...
Special note: I hope to never do this again. :)
2001-09-28 10:31:20 +00:00
Jeff Teunissen
873521a68d
Makefile cleanup continues. Models.
2001-09-28 09:49:09 +00:00
Jeff Teunissen
e892131af5
Rename gl_libgl to gl_driver, nuke the last of the HAVE_GLX references,
...
and default gl_driver to OPENGL32.DLL on Win32.
2001-09-28 07:41:38 +00:00
Jeff Teunissen
e9c9c8bab6
fix up installs for -svga.
2001-09-28 06:55:27 +00:00
Bill Currie
b1f4a778f9
the rcsid commit from hell }:>
2001-09-28 06:26:31 +00:00
Jeff Teunissen
31b6da027c
The video version. This WILL break QW and NQ until my next commit.
2001-09-28 05:33:58 +00:00
Jeff Teunissen
e6d7aec03a
Build system updates/fixes for audio libs. MUCH cleaner, probably
...
faster, doesn't do anything unnecessary any more as far as I can tell.
2001-09-28 05:33:12 +00:00
Jeff Teunissen
325303b037
And now for the 32-bit software renderer.
2001-09-27 21:58:10 +00:00
Jeff Teunissen
4c40bad808
Okay, this ought to work for software.
2001-09-27 21:53:59 +00:00
Jeff Teunissen
be9ee170d6
Okay, the GL renderer lib is fixed up.
2001-09-27 21:47:47 +00:00