Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 1641 files, 123.9 MB |
| Latest run log | run-20261016-013053-1175.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
| File | Size | Modified (UTC) |
|---|---|---|
| run-20261016-013053-1175.log | 493 KB | 2026-10-16 00:23:29 |
| run-20261016-005916-1174.log | 140 KB | 2026-10-15 23:20:42 |
| run-20261015-233037-1173.log | 286 KB | 2026-10-15 22:49:05 |
| run-20261015-223228-1172.log | 323 KB | 2026-10-15 21:20:26 |
| run-20261015-214009-1171.log | 189 KB | 2026-10-15 20:22:17 |
| run-20261015-203630-1170.log | 237 KB | 2026-10-15 19:29:57 |
| run-20261015-200016-1169.log | 117 KB | 2026-10-15 18:26:20 |
| run-20261015-192507-1168.log | 243 KB | 2026-10-15 17:50:05 |
| run-20261015-180909-1167.log | 298 KB | 2026-10-15 17:14:55 |
| run-20261015-160058-1166.log | 530 KB | 2026-10-15 15:58:58 |
| run-20261015-141814-1165.log | 370 KB | 2026-10-15 13:50:48 |
| run-20261015-120445-1164.log | 767 KB | 2026-10-15 12:08:04 |
| run-20261015-100121-1163.log | 543 KB | 2026-10-15 09:54:35 |
| run-20261015-070843-1162.log | 1.2 MB | 2026-10-15 07:51:10 |
| run-20261015-054521-1161.log | 416 KB | 2026-10-15 04:58:33 |
| run-20261015-033336-1160.log | 684 KB | 2026-10-15 03:35:11 |
| run-20261015-020624-1159.log | 212 KB | 2026-10-15 01:23:26 |
| run-20261015-015612-1158.log | 154 B | 2026-10-14 23:56:13 |
| run-20261015-014600-1157.log | 191 B | 2026-10-14 23:46:01 |
| run-20261015-013549-1156.log | 191 B | 2026-10-14 23:35:50 |
| run-20261015-012537-1155.log | 154 B | 2026-10-14 23:25:38 |
| run-20261015-011525-1154.log | 191 B | 2026-10-14 23:15:26 |
| run-20261015-010513-1153.log | 154 B | 2026-10-14 23:05:14 |
| run-20261015-005502-1152.log | 154 B | 2026-10-14 22:55:03 |
| run-20261015-004450-1151.log | 154 B | 2026-10-14 22:44:51 |
| run-20261015-003439-1150.log | 154 B | 2026-10-14 22:34:40 |
| run-20261015-002427-1149.log | 154 B | 2026-10-14 22:24:28 |
| run-20261015-001416-1148.log | 154 B | 2026-10-14 22:14:17 |
| run-20261015-000405-1147.log | 191 B | 2026-10-14 22:04:06 |
| run-20261014-235353-1146.log | 191 B | 2026-10-14 21:53:54 |
| run-20261014-234342-1145.log | 191 B | 2026-10-14 21:43:43 |
| run-20261014-233330-1144.log | 154 B | 2026-10-14 21:33:31 |
| run-20261014-232318-1143.log | 154 B | 2026-10-14 21:23:19 |
| run-20261014-231307-1142.log | 154 B | 2026-10-14 21:13:08 |
| run-20261014-230255-1141.log | 154 B | 2026-10-14 21:02:56 |
| run-20261014-225244-1140.log | 154 B | 2026-10-14 20:52:45 |
| run-20261014-222900-1139.log | 142 KB | 2026-10-14 20:42:33 |
| run-20261014-212813-1138.log | 571 KB | 2026-10-14 20:18:50 |
| run-20261014-201639-1137.log | 370 KB | 2026-10-14 19:18:02 |
| run-20261014-174154-1136.log | 835 KB | 2026-10-14 18:06:28 |
| run-20261014-170319-1135.log | 320 KB | 2026-10-14 15:31:41 |
| run-20261014-161418-1134.log | 270 KB | 2026-10-14 14:53:09 |
| run-20261014-150444-1133.log | 323 KB | 2026-10-14 14:04:07 |
| run-20261014-133301-1132.log | 340 KB | 2026-10-14 12:54:34 |
| run-20261014-124552-1131.log | 194 KB | 2026-10-14 11:22:49 |
| run-20261014-103913-1130.log | 525 KB | 2026-10-14 10:35:42 |
| run-20261014-082946-1129.log | 630 KB | 2026-10-14 08:29:02 |
| run-20261014-061713-1128.log | 454 KB | 2026-10-14 06:19:36 |
| run-20261014-052042-1127.log | 96 KB | 2026-10-14 04:07:02 |
| run-20261014-044319-1126.log | 200 KB | 2026-10-14 03:10:30 |
Tail — run-20261016-013053-1175.log (last 200 lines)
# All three are bounded `timeout 5`: validation before any I/O, the
# same assertion E's bad-flag probe makes.
if printf '%s\n' "$helpout" | grep -q -- '--format'; then
fmt_n=$((fmt_n + 1))
timeout 5 "$tools_dir/$b" --format xml >/dev/null 2>&1
if [ $? -eq 2 ]; then
fmtv_ok=$((fmtv_ok + 1))
else
badval="$badval $b:format-value"
fi
timeout 5 "$tools_dir/$b" --format >/dev/null 2>&1
> build · mimo-v2.6-flash-free
Now I have the full picture. Writing the two registry sections:
[0m$ [0mcd /data/repo && tail -3 tools/REGISTRY.md
figure is claimed here, by the decision `[0.4.354]` recorded: the assertion
counts are quoted in CHANGELOG, never as a claim in a section
`tests/test_registry_figure_readers.sh` would have to read.
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && grep -n "fig_claim=\|fig_live_n=\|fig_disc=\|figure_live\|fig_live" tests/test_registry_coverage.sh | head -20 && sed -n '/# ---- (63)/,/fig_claim/p' tests/test_registry_coverage.sh | head -60
687: local fig_disc="" fig_live_n=0 fig_claim="" figbad="" fig_list="" fig_lrc=0
1386: fig_disc=$(printf '%s\n' "$fig_list" \
1401: fig_live_n=$((fig_live_n + 1))
1402: fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
1451: if [ "$fig_live_n" -eq 0 ]; then
1453: elif [ "$fig_live_n" -gt 1 ]; then
1634: echo "SUMMARY tools=$tools_n registered=$reg_n test_sections=$test_n help_run=$help_run help_ok=$help_ok badarg_run=$arg_run badarg_ok=$arg_ok ec_run=$ec_run ec_ok=$ec_ok fmt_n=$fmt_n fmt_value_ok=$fmtv_ok fmt_missing_ok=$fmtm_ok timeout_n=$to_n timeout_ok=$to_ok port_n=$port_n port_value_ok=$portv_ok port_missing_ok=$portm_ok miss_n=$miss_n miss_missing_ok=$missm_ok conv_pairs=$conv_pairs conv_extra=$conv_extra fig_disc=$fig_disc fig_live=$fig_live_n fig_claim=${fig_claim:-none} fig_stale=$fig_stale_n fig_undated=$fig_undated_n fig_head=$fig_head fig_src=$fig_src syn_n=$syn_n syn_ok=$syn_ok synp_n=$synp_n synp_ok=$synp_ok cl_scope=$cl_scope cl_fmt=$cl_fmt cl_port=$cl_port cl_enum=$cl_enum cl_enum_ok=$cl_enum_ok cl_num=$cl_num cl_num_ok=$cl_num_ok cl_declared=$cl_declared cl_declared_ok=$cl_declared_ok cl_declared_seen=${cl_declared_seen:-none} cl_other=$cl_other live_re_sites=$live_re_sites gloss_sites=$gloss_sites fmt_claim_pairs=$fmtcp fmt_claim_mismatch=$fmtcm allflag_pairs=$afcp allflag_mismatch=$afcm allflag_numeq=$afnq violations=$v"
3171: 1 "$(sget fig_live)"
3211:assert_eq "C35g fig_live counted both claims" 2 "$(sget fig_live)"
3305: 1 "$(sget fig_live)"
4325:assert_contains "F0 the live snapshot carries the figure keys" "fig_disc=" "$LIVE_OUT"
4328:assert_eq "F2 exactly one Live line carries a suite figure" 1 "$(sget_live fig_live)"
# ---- (63) the registry's full-regression figure: dated, singular, TRUE ----
# This file quotes the regression total in six places; only ONE of them may
# be read as "the regression is green at N suites today", and until this
# section none of the six had a reader: the `- Live:` bullet said 40 suites
# while `regression-run --list` discovered 59. The rule has two halves:
# * exactly one `- Live:` line carries a suite figure, and its count must
# equal what the TOOL discovers (`regression-run --list` — the same
# `discover()` the run uses, so there is one definition of "suite");
# * every other `<N> suites` figure must carry a YYYY-MM-DD on its own
# line, i.e. it is attributable history rather than a present claim —
# and, since queue item (119), so must every numeric `Live` claim line,
# because an undated "live" claim is indistinguishable from a stale one;
# and, since queue item (120), "claim line" is read from `$LIVE_RE`
# rather than spelled `^- Live` at each use site, so an indented
# continuation of a bullet is in scope as its parent is.
# Granularity is declared, not implied (compare-or-declare, as (54)/(56)):
# for the STALENESS rule only the SUITE COUNT is machine-checked — the
# assertion totals next to it are dated prose — while for the UNDATED rule
# only the DATE is checked, never the number on the line: a dated figure is
# allowed to be old, because that is what "history" means.
fig_list=$(timeout 20 "$tools_dir/regression-run" --list 2>&1)
fig_lrc=$?
fig_disc=$(printf '%s\n' "$fig_list" \
| sed -n 's/^result: \([0-9][0-9]*\) suite(s) discovered.*/\1/p' | head -1)
case "$fig_disc" in
''|*[!0-9]*|0)
# An input that was not read is never a pass (repo-lint, C12, C13).
echo "ERROR figure_discovery $tools_dir/regression-run --list rc=$fig_lrc"
return 3 ;;
esac
# The live figure: a `Live` claim line (read from `$LIVE_RE`) that also
# carries a suite figure. A claim line with no figure on it (repo-lint's
# HEAD bullet is one) is evidence about a different tool and is not this
# claim.
while IFS= read -r line; do
[ -n "$line" ] || continue
fig_live_n=$((fig_live_n + 1))
fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && sed -n '2760,2775p' tests/test_registry_coverage.sh && sed -n '4495,4515p' tests/test_registry_coverage.sh
run_child "$D"
assert_eq "C28d a usage row that names no flag -> exit 1" 1 "$RC"
has_v synopsis_flags verify-landing \
&& ok "C28e VIOLATION synopsis_flags verify-landing" \
|| fail "C28e VIOLATION synopsis_flags verify-landing"
assert_eq "C28f exactly one violation - the plant, and nothing else" 1 "$(sget violations)"
assert_eq "C28g scope now 32 tools that print an option list (pdns-api.py out; 23 -> 24 with cache-show; 24 -> 25 with tmp-lock; 25 -> 26 with download-stats; 26 -> 27 with shift-tally; 27 -> 28 with shift-deploy; 28 -> 29 with shift-census; 29 -> 30 with attribution-gap; 30 -> 31 with coverage-guard; 31 -> 32 with baseline-stale)" \
32 "$(sget syn_n)"
assert_eq "C28h and exactly one of them lost the promise - syn_ok is one below the scope" \
"$(( $(sget syn_n) - 1 ))" "$(sget syn_ok)"
# --- C29 the (73) class: two metavars whose own TYPE says the value is wrong.
# --- The plant is CORRECT everywhere the older classes look — unknown flag,
# --- missing value, PORT and (absent) --format all still answer 2 — so the
# --- only thing it can be caught by is the value half of a metavar: `--mode
# --- {a,b}` accepts `z` (an enum metavar IS the list of legal values) and
"$(sget_live cl_declared)" "$(sget_live cl_declared_ok)"
# A scope CLAIM about this tree, not a constant — the same ruling C28g makes:
# every value-taking pair whose metavar decides nothing (27 today: 22 before
# `cache-show` added `--cache-dir DIR` and `--mount PATH`, neither of which any
# class can call invalid without asking the tool, and 25 once `tmp-lock` added
# `--lock-file PATH` — a path is not a type any class may reject, and 27 once
# `attribution-gap` added `--since DATE` and `--repo DIR`, neither of which
# decides anything a class may reject) lands in
# `cl_other`, so a deliberate growth is a refresh and a SHRINK would be the
# drift G38 exists
# to catch. Recounted 2026-10-09 with `tools/tmp-lock` on the tree, and
# 2026-10-14 with `tools/attribution-gap`.
assert_eq "G38 and the three left cl_other rather than being counted twice (27 non-classified pairs: 22 before cache-show, 24 with it, 25 with tmp-lock, 27 with attribution-gap)" \
27 "$(sget_live cl_other)"
# The live digits are reported, not asserted: `cl_declared_seen` reads the
# code each probe actually returned (today `3,3,1`), so a reader can see the
# environment's answer without an assertion betting on the one whose value is
# a fact about Postfix rather than about the argument. A snapshot that ran no
# declared probe at all reads `none`, which is the state G35/G36 already
# refuse — this line is a DIAG, not a claim.
assert_contains "G39 and the codes the three probes actually returned are printed for a reader to watch" \
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && grep -n "LIVE_RE=" tests/test_registry_coverage.sh && sed -n '1395,1460p' tests/test_registry_coverage.sh
374:# The definition, quoted: LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\*\*)?[[:space:]]*Live'
425:LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\*\*)?[[:space:]]*Live'
1506: # `LIVE_RE=` line in the suite file in scope — in the live run this very
1520: # the first `^LIVE_RE=` hit is pinned here instead of being found twice by
1522: live_re_line=$(grep -n '^LIVE_RE=' "$live_re_src" 2>/dev/null | head -1)
1524: live_re=${live_re#LIVE_RE=}
1529: echo "ERROR live_re_source no LIVE_RE= line in $live_re_src"
1533: live_re_lit="LIVE_RE=$live_re"
1671:The definition, quoted: LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\*\*)?[[:space:]]*Live'
3227:# checker compares each copy with the `LIVE_RE=` line in the suite file in
3233:c36_lit=$(grep '^LIVE_RE=' "$SELF" | head -1)
3319:c37_val=${c36_lit#LIVE_RE=}
3320:c37_new=${c36_new#LIVE_RE=}
3464:new = "LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\\*\\*)?[[:space:]]*Live.*X?'"
3472: grep -qxF -- "LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\\*\\*)?[[:space:]]*Live.*X?'" \
3498:c40_def=$(grep -n '^LIVE_RE=' "$SELF" | head -1 | cut -d: -f1)
3511:d = next(i for i, l in enumerate(lines) if l.startswith("LIVE_RE="))
3545:c40a_def=$(grep -n '^LIVE_RE=' "$D/tests/test_registry_coverage.sh" | head -1 | cut -d: -f1)
3562:d = next(i for i, l in enumerate(lines) if l.startswith("LIVE_RE="))
3581:c40b_def=$(grep -n '^LIVE_RE=' "$D/tests/test_registry_coverage.sh" | head -1 | cut -d: -f1)
3611:d = next(i for i, l in enumerate(lines) if l.startswith("LIVE_RE="))
# The live figure: a `Live` claim line (read from `$LIVE_RE`) that also
# carries a suite figure. A claim line with no figure on it (repo-lint's
# HEAD bullet is one) is evidence about a different tool and is not this
# claim.
while IFS= read -r line; do
[ -n "$line" ] || continue
fig_live_n=$((fig_live_n + 1))
fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
| head -1 | grep -oE '^[0-9]+')
if [ "$fig_claim" != "$fig_disc" ]; then
fig_stale_n=$((fig_stale_n + 1))
figbad="$figbad figure_stale:${fig_claim:-unreadable}"
fi
done <<EOF
$(grep -E "$LIVE_RE" "$registry" | grep -E '[0-9]+ suites([^_[:alnum:]]|$)')
EOF
# Every figure line, the live one included, must be attributable to a date.
# (119) widens the scope from `<N> suites` alone — which guarded the
# regression figure and nothing else — to EVERY numeric `- Live:` bullet:
# six of them quoted live exit codes, a percentage and a file count with no
# date anywhere on the line, and one (`source-sync-check`, "42 files") was
# already false when re-read against a tool that printed 44. (120) then
# found the same restriction written as PROSE three times over, so the rule
# could not see a claim line that was merely INDENTED: five `Live` claim
# lines in this registry are continuations of their own bullet, three of
# them numeric and none dated, and `^- Live` matched none. The selector
# below is now `$LIVE_RE`, the one definition at the top of this file, so
# bullet, bold and indented spellings are one scope. Granularity is
# declared, not implied, exactly as the paragraph above declares it: the
# DATE of the line is the machine-checked fact, never the number on it (a
# dated figure is allowed to be old — that is what history means).
# Both selectors are unioned and deduplicated BEFORE the loop, so a line
# that satisfies them both (the `- Live:` suite figure line, and any
# indented one that carries a figure too) yields ONE
# `figure_undated` and not two — one line, one finding, the rule every
# control's `exactly one violation` count rests on. A line with no suite
# figure on it takes `live` as its subject: the same word `figure_missing`
# and `figure_duplicate` already use for a `- Live:` line, so a reader never
# sees an empty `VIOLATION figure_undated ` subject.
fig_scope=$( { grep -E '[0-9]+ suites([^_[:alnum:]]|$)' "$registry"
grep -E "$LIVE_RE" "$registry" | grep -E '[0-9]'; } \
| awk '!seen[$0]++' )
while IFS= read -r line; do
[ -n "$line" ] || continue
printf '%s\n' "$line" | grep -qE '[0-9]{4}-[0-9]{2}-[0-9]{2}' \
|| { fig_undated_n=$((fig_undated_n + 1))
fig_subj=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
| head -1 | grep -oE '^[0-9]+')
[ -n "$fig_subj" ] || fig_subj=live
figbad="$figbad figure_undated:$fig_subj"
echo "DIAG figure_undated_line subject=$fig_subj text=$(printf '%s\n' "$line" | grep -oE "$LIVE_RE.{0,60}")"; }
done <<EOF
$fig_scope
EOF
if [ "$fig_live_n" -eq 0 ]; then
echo "VIOLATION figure_missing live"; v=$((v + 1))
elif [ "$fig_live_n" -gt 1 ]; then
echo "VIOLATION figure_duplicate live"; v=$((v + 1))
fi
for f in $figbad; do
echo "VIOLATION ${f%%:*} ${f#*:}"; v=$((v + 1))
done
# ---- (83) the second count: what is COMMITTED, not what is checked out ----
> build · mimo-v2.6-flash-free
Select another run log from the list above. Only files matching run-YYYYMMDD-HHMMSS-N.log are readable.
App log tail — prod-8001.log (last 60 lines)
[Fri Oct 16 02:01:32 2026] 127.0.0.1:44354 Accepted [Fri Oct 16 02:01:32 2026] 127.0.0.1:44354 Closing [Fri Oct 16 02:01:32 2026] 127.0.0.1:44364 Accepted [Fri Oct 16 02:01:32 2026] 127.0.0.1:44364 Closing [Fri Oct 16 02:01:32 2026] 127.0.0.1:44366 Accepted [Fri Oct 16 02:01:33 2026] 127.0.0.1:44366 Closing [Fri Oct 16 02:01:33 2026] 127.0.0.1:44376 Accepted [Fri Oct 16 02:01:33 2026] 127.0.0.1:44376 Closing [Fri Oct 16 02:01:33 2026] 127.0.0.1:44386 Accepted [Fri Oct 16 02:01:33 2026] 127.0.0.1:44386 Closing [Fri Oct 16 02:01:33 2026] 127.0.0.1:44390 Accepted [Fri Oct 16 02:01:33 2026] 127.0.0.1:44390 Closing [Fri Oct 16 02:12:22 2026] 127.0.0.1:39232 Accepted [Fri Oct 16 02:12:22 2026] 127.0.0.1:39232 Closing [Fri Oct 16 02:15:23 2026] 127.0.0.1:53528 Accepted [Fri Oct 16 02:15:23 2026] 127.0.0.1:53528 Closing [Fri Oct 16 02:15:23 2026] 127.0.0.1:53542 Accepted [Fri Oct 16 02:15:23 2026] 127.0.0.1:53542 Closing [Fri Oct 16 02:15:23 2026] 127.0.0.1:53548 Accepted [Fri Oct 16 02:15:23 2026] 127.0.0.1:53548 Closing [Fri Oct 16 02:15:23 2026] 127.0.0.1:53554 Accepted [Fri Oct 16 02:15:23 2026] 127.0.0.1:53554 Closing [Fri Oct 16 02:15:23 2026] 127.0.0.1:53562 Accepted [Fri Oct 16 02:15:23 2026] 127.0.0.1:53562 Closing [Fri Oct 16 02:15:23 2026] 127.0.0.1:53564 Accepted [Fri Oct 16 02:15:23 2026] 127.0.0.1:53564 Closing [Fri Oct 16 02:15:23 2026] 127.0.0.1:53570 Accepted [Fri Oct 16 02:15:24 2026] 127.0.0.1:53570 Closing [Fri Oct 16 02:15:24 2026] 127.0.0.1:53584 Accepted [Fri Oct 16 02:15:24 2026] 127.0.0.1:53584 Closing [Fri Oct 16 02:15:24 2026] 127.0.0.1:53586 Accepted [Fri Oct 16 02:15:24 2026] 127.0.0.1:53586 Closing [Fri Oct 16 02:15:24 2026] 127.0.0.1:53592 Accepted [Fri Oct 16 02:15:24 2026] 127.0.0.1:53592 Closing [Fri Oct 16 02:16:31 2026] 127.0.0.1:58774 Accepted [Fri Oct 16 02:16:31 2026] 127.0.0.1:58774 Closing [Fri Oct 16 02:16:31 2026] 127.0.0.1:58782 Accepted [Fri Oct 16 02:16:31 2026] 127.0.0.1:58782 Closing [Fri Oct 16 02:16:31 2026] 127.0.0.1:58798 Accepted [Fri Oct 16 02:16:31 2026] 127.0.0.1:58798 Closing [Fri Oct 16 02:16:31 2026] 127.0.0.1:58806 Accepted [Fri Oct 16 02:16:31 2026] 127.0.0.1:58806 Closing [Fri Oct 16 02:16:31 2026] 127.0.0.1:58818 Accepted [Fri Oct 16 02:16:31 2026] 127.0.0.1:58818 Closing [Fri Oct 16 02:16:31 2026] 127.0.0.1:58828 Accepted [Fri Oct 16 02:16:31 2026] 127.0.0.1:58828 Closing [Fri Oct 16 02:16:31 2026] 127.0.0.1:58844 Accepted [Fri Oct 16 02:16:32 2026] 127.0.0.1:58844 Closing [Fri Oct 16 02:16:32 2026] 127.0.0.1:58848 Accepted [Fri Oct 16 02:16:32 2026] 127.0.0.1:58848 Closing [Fri Oct 16 02:16:32 2026] 127.0.0.1:58850 Accepted [Fri Oct 16 02:16:32 2026] 127.0.0.1:58850 Closing [Fri Oct 16 02:16:32 2026] 127.0.0.1:58866 Accepted [Fri Oct 16 02:16:32 2026] 127.0.0.1:58866 Closing [Fri Oct 16 02:20:42 2026] 127.0.0.1:33526 Accepted [Fri Oct 16 02:20:42 2026] 127.0.0.1:33526 Closing [Fri Oct 16 02:22:26 2026] 127.0.0.1:60648 Accepted [Fri Oct 16 02:22:26 2026] 127.0.0.1:60648 Closing [Fri Oct 16 02:24:27 2026] 127.0.0.1:39248 Accepted
Other app logs: downloads.log
Generated 2026-10-16 00:24:27 UTC · Gladex.de