rcourtman
b4ea3761e8
Keep paired PR benchmarks inside their time budget ( #2544 )
...
The non-required **Benchmarks** check has failed on every non-superseded
PR since about 15:00 UTC on 5 October. Examples are #2521 , #2520 , #2524 ,
#2525 , #2527 , #2530 and #2532 , each ending with `Paired base and
candidate benchmarks (pull requests)` timed out after 25 minutes. The
paired step runs 10 base and 10 candidate samples, so each second added
per sample costs 20 seconds of step time.
### What made it slower
Paired step duration across PR runs, with per-package seconds per sample
taken from the `ok` lines in the job logs:
| Period | Paired step | `internal/unifiedresources` |
`internal/monitoring` |
|---|---|---|---|
| 24 Sep – 5 Oct 08:00 | 16–18 min | 7.9 s | 4.5 s |
| after #2486 (08:11) | 20.5–20.9 min | 16.2 s | 5.0 s |
| after #2518 (15:01) | killed at 25 min | 38.2 s | 9.9 s |
- **#2518** added `BenchmarkRegistryProjectionSnapshot`. Its `cold` mode
rebuilt the registry between `b.StopTimer` and `b.StartTimer` on every
iteration. Go picks `b.N` from timed work only, so the empty-registry
cases ran hundreds of thousands of untimed ingests. Per sample,
`/0/cold/point-targets` took 10.3 s and `/0/cold/bulk-targets` 5.9 s at
a 100 ms benchtime. That is the cause of the timeouts.
- **#2486** added 46 owner-index and metadata sub-benchmarks, about +8 s
per sample. That is legitimate coverage. #2518 's
`BenchmarkBroadcastMetricsSnapshot` and #2527 added about +6 s more.
- `-count`, `-benchtime` and the package list did not change.
### Fix
1. **Root cause.** `cold` now invalidates the registry's derived state
(canonical metadata, typed views, source-target index) instead of
rebuilding the registry. The refresh never reads its own output, so this
repeats a fresh ingest's first read: at 1000 VMs, 40011 vs 40014
allocs/op and about 5.09 MB/op, the same as before. Locally the 24-case
family now runs in 4.9 s; before, its 6 cold cases alone took 33.8 s.
2. **Scope.** Paired PR runs now sample only packages whose in-module
dependency closure (`go list -deps -test`) holds a changed file. A
`_test.go` file selects only its own package. Changes to
`go.mod`/`go.sum`, dirty or non-Git trees, or an unreadable graph select
every package. Applied to today's failures: #2521 , #2524 and #2525
sample nothing; #2530 samples `internal/api`; #2532 samples api and
monitoring; #2520 samples 5 packages; #2527 samples 7. The metadata
records `selection=` and `packages=`.
3. **Budget.** A module or shared-model change still samples nearly
everything, about 24 minutes including the ~2.7 min warm-up. The step
timeout is now a measured 30 minutes (job stays at 35).
`PULSE_BENCH_BUDGET_SECONDS=1680` makes the script project its total
after each round. Once the projection reaches 28 minutes it stops and
prints each package's mean seconds per sample, which replaces an
unexplained timeout. `TestPairedBenchmarksStopInsideTheirBudget` keeps
budget < step timeout < job timeout.
4. **Store-backed chart benchmarks** (second commit). Go calls a
benchmark function again for each `b.N` it tries.
`HandleWorkloadCharts_StoreBacked` and
`HandleWorkloadsSummaryCharts_StoreBacked` each seeded 84,000 points
into a fresh SQLite store (about 0.6 s) to time a request of 0.2 ms or
less, two or three times per sample. In CI that was 3.5 s and 3.6 s of
internal/api's 11.5 s per sample. The timed loop now runs in a
`range=4h` sub-benchmark, so the parent seeds once per run. Data,
request and bytes/allocs per op are unchanged, and locally the pair
falls from about 6 s to 1–1.5 s. The names gain `/range=4h`, so this
PR's comparison reports them unmatched.
Unpaired branch runs still sample every package. With the cold fix,
their 15-minute step (13–14.2 min today) regains about 3 minutes of
headroom.
### Verification
- `scripts/tests/test-ci-benchmarks.sh` covers no-op, own-test-only,
shared-dependency, unreadable-graph, dirty-tree, module-file,
budget-exceeded, in-budget and invalid-budget cases. Five mutations of
the selection and budget logic are each caught.
- On the real package graph, selection maps `internal/models` to 7
packages, `internal/monitoring` to api+monitoring, an `internal/api`
embed to api, and frontend or docs paths to none.
- End to end with real Go on two clean clones (`origin/main` vs this
change), only `./internal/unifiedresources/` was sampled. Its per-sample
time went from 53.9 s to 26.7 s on a loaded Mac.
- `go test ./scripts/installtests -run
'TestPairedBenchmarksStopInsideTheirBudget|TestBenchmarkQualificationRetainsProvenance'`,
plus the script-reference and doc-drift suites.
This PR's own Benchmarks run should sample only
`internal/unifiedresources` and `internal/api`, because both changes are
those packages' own test files.
2026-10-06 00:00:56 +01:00
..
2026-10-05 22:23:09 +01:00
2026-08-31 23:52:25 +01:00
2026-10-02 10:17:49 +01:00
2026-08-21 14:56:04 +01:00
2026-08-21 14:56:04 +01:00
2026-08-30 12:55:50 +01:00
2026-10-01 10:04:11 +01:00
2026-09-19 17:26:25 +01:00
2026-07-12 22:13:04 +01:00
2026-03-18 16:06:30 +00:00
2026-07-23 22:11:48 +01:00
2026-08-09 13:36:07 +01:00
2026-03-18 16:06:30 +00:00
2026-08-05 14:34:50 +01:00
2026-08-31 00:43:42 +01:00
2026-08-30 08:36:31 +01:00
2026-07-11 16:08:44 +01:00
2026-08-23 09:18:44 +01:00
2026-09-07 17:24:25 +01:00
2026-07-12 23:15:54 +01:00
2026-08-31 23:52:25 +01:00
2026-08-31 23:52:25 +01:00
2026-07-13 17:00:36 +01:00
2026-07-19 14:48:24 +01:00
2026-09-07 17:24:25 +01:00
2026-09-07 17:24:25 +01:00
2026-07-24 10:33:57 +01:00
2026-04-22 00:05:57 +01:00
2026-04-22 00:05:57 +01:00
2026-04-22 00:05:57 +01:00
2026-09-08 21:29:36 +01:00
2026-10-01 08:55:56 +01:00
2026-07-11 19:49:17 +01:00
2026-07-10 00:14:01 +01:00
2026-07-11 19:49:17 +01:00
2026-06-23 17:26:15 +01:00
2026-07-11 11:54:56 +01:00
2026-07-11 11:54:56 +01:00
2026-05-12 12:06:27 +01:00
2026-10-02 21:18:55 +01:00
2026-10-02 21:18:55 +01:00
2026-06-23 17:26:15 +01:00
2026-07-11 21:27:00 +01:00
2026-10-05 22:23:09 +01:00
2026-08-30 18:00:33 +01:00
2026-08-30 18:00:33 +01:00
2026-07-02 23:27:49 +01:00
2026-09-24 10:42:33 +01:00
2026-10-01 09:22:15 +01:00
2026-10-01 09:22:15 +01:00
2026-09-08 21:29:36 +01:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-06-23 17:26:15 +01:00
2026-09-01 13:59:36 +01:00
2026-09-01 13:59:36 +01:00
2026-07-11 19:49:17 +01:00
2026-08-27 18:20:03 +01:00
2026-09-08 21:29:36 +01:00
2026-09-10 17:06:27 +01:00
2026-07-18 20:23:41 +01:00
2026-07-18 20:23:41 +01:00
2026-03-24 23:59:52 +00:00
2026-03-27 08:39:59 +00:00
2026-09-06 17:42:24 +01:00
2026-06-04 11:23:05 +01:00
2026-09-06 17:42:24 +01:00
2026-03-18 16:06:30 +00:00
2026-09-06 17:42:24 +01:00
2026-03-18 16:06:30 +00:00
2026-01-25 21:08:44 +00:00
2026-08-14 03:11:10 +01:00
2026-07-18 12:14:12 +01:00
2026-06-23 17:26:15 +01:00
2026-03-19 04:04:14 +00:00
2026-09-07 09:45:31 +01:00
2026-07-11 12:43:55 +01:00
2026-10-03 09:31:34 +01:00
2026-06-23 17:26:15 +01:00
2026-09-05 21:43:02 +01:00
2026-03-18 16:06:30 +00:00
2026-05-15 22:45:48 +01:00
2026-09-06 17:42:24 +01:00
2026-06-07 00:06:34 +01:00
2026-09-07 17:24:25 +01:00
2026-10-03 09:31:34 +01:00
2026-04-28 15:49:18 +01:00
2026-06-03 12:29:37 +01:00
2026-03-26 17:12:27 +00:00
2026-04-11 16:47:37 +01:00
2026-03-18 16:06:30 +00:00
2026-06-27 14:43:09 +01:00
2026-09-08 02:08:15 +01:00
2026-03-18 16:06:30 +00:00
2026-05-28 15:10:39 +01:00
2026-09-08 02:08:15 +01:00
2026-01-25 21:08:44 +00:00
2026-09-10 18:21:29 +01:00
2026-05-08 02:21:31 +01:00
2026-09-02 07:55:42 +01:00
2026-09-02 07:55:42 +01:00
2026-09-02 08:53:50 +01:00
2026-09-02 11:15:22 +01:00
2026-06-30 10:37:54 +01:00
2026-07-22 16:29:44 +01:00
2026-06-23 17:26:15 +01:00
2026-08-27 19:13:32 +01:00
2026-08-27 17:20:32 +01:00
2026-03-28 21:14:54 +00:00
2026-03-18 16:06:30 +00:00
2026-08-29 14:54:04 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-07-30 12:06:19 +01:00
2026-07-12 23:15:54 +01:00
2026-07-12 23:15:54 +01:00
2026-07-11 19:49:17 +01:00
2026-07-19 15:11:02 +01:00
2026-07-19 15:11:02 +01:00
2026-07-19 15:11:02 +01:00
2026-08-15 10:25:04 +01:00
2026-08-15 08:48:49 +01:00
2026-07-22 12:31:44 +01:00
2026-08-15 10:25:04 +01:00
2026-07-22 12:31:44 +01:00
2026-07-24 10:33:57 +01:00
2026-07-07 20:37:18 +01:00
2026-07-16 15:25:47 +01:00
2026-07-16 16:34:26 +01:00
2026-10-03 18:16:20 +01:00
2026-08-31 19:47:01 +01:00
2026-08-07 21:38:47 +01:00
2026-08-29 06:16:52 +01:00
2026-01-24 22:42:23 +00:00
2026-07-09 20:10:08 +01:00
2026-05-28 14:49:20 +01:00
2026-08-09 13:36:07 +01:00
2026-08-09 13:36:07 +01:00
2026-02-04 09:52:32 +00:00
2026-03-24 23:59:52 +00:00
2026-09-07 12:00:48 +01:00
2026-03-18 16:06:30 +00:00
2026-06-10 11:37:39 +01:00
2026-06-10 11:37:39 +01:00
2026-08-30 17:38:59 +01:00
2026-08-30 21:44:32 +01:00
2026-08-30 15:38:34 +01:00
2026-08-30 15:38:34 +01:00
2026-08-30 21:44:32 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-05-03 12:25:56 +01:00
2026-09-28 15:29:15 +01:00
2026-09-08 21:53:18 +01:00
2026-08-21 18:36:21 +01:00
2026-02-02 18:59:44 +00:00
2026-09-06 20:09:54 +01:00
2026-10-03 09:31:34 +01:00
2026-08-29 22:12:41 +01:00
2026-06-02 17:34:10 +01:00
2026-07-09 20:10:08 +01:00
2026-03-26 20:51:29 +00:00
2026-05-04 09:47:54 +01:00
2026-07-09 20:10:08 +01:00
2026-08-31 00:43:42 +01:00
2026-03-18 16:06:30 +00:00
2026-06-10 17:48:11 +01:00
2026-08-31 00:06:24 +01:00
2026-08-31 00:06:24 +01:00
2026-08-21 14:56:07 +01:00
2026-08-21 14:56:07 +01:00
2026-01-25 21:08:44 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-09-08 21:42:28 +01:00
2026-08-12 07:32:50 +01:00
2026-08-11 14:05:06 +01:00
2026-07-26 12:42:22 +01:00
2026-08-24 22:45:59 +01:00
2026-08-30 21:44:32 +01:00
2026-08-24 22:45:59 +01:00
2026-08-24 22:45:59 +01:00
2026-07-18 13:09:18 +01:00
2026-08-30 00:02:15 +01:00
2026-10-05 22:27:03 +01:00
2026-10-03 23:58:11 +01:00
2026-08-06 11:09:52 +01:00
2026-07-24 13:00:03 +01:00
2026-07-09 19:46:40 +01:00
2026-07-09 19:46:40 +01:00
2026-08-24 22:45:59 +01:00
2026-10-05 23:33:44 +01:00
2026-03-18 16:06:30 +00:00
2026-04-26 15:27:10 +01:00
2026-08-09 13:36:07 +01:00
2026-05-04 09:14:09 +01:00
2026-04-11 17:20:58 +01:00
2026-05-05 12:59:59 +01:00
2026-06-03 12:29:37 +01:00
2026-05-04 09:14:09 +01:00
2026-05-04 09:14:09 +01:00
2026-10-05 22:23:09 +01:00
2026-10-05 22:23:09 +01:00
2026-03-18 16:06:30 +00:00
2026-10-03 20:24:47 +01:00
2026-06-23 17:26:15 +01:00
2026-07-24 00:19:40 +01:00
2026-08-29 22:23:54 +01:00
2026-07-24 09:45:05 +01:00
2026-08-29 22:23:54 +01:00
2026-03-18 16:06:30 +00:00
2026-08-30 18:40:06 +01:00
2026-08-31 00:43:42 +01:00
2026-03-24 16:05:19 +00:00
2026-07-11 15:19:41 +01:00
2026-03-18 16:06:30 +00:00
2026-07-23 23:57:42 +01:00
2026-07-11 15:19:41 +01:00
2025-11-29 17:06:18 +00:00
2026-07-23 23:57:42 +01:00
2026-09-05 22:25:48 +01:00
2026-08-27 20:43:54 +01:00
2026-09-07 12:00:48 +01:00
2026-09-07 12:00:48 +01:00
2026-07-24 12:42:16 +01:00
2026-07-24 12:42:16 +01:00
2026-08-27 20:43:54 +01:00
2026-03-28 20:35:10 +00:00
2026-08-31 00:43:42 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-25 23:40:22 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-06-03 12:29:37 +01:00
2026-04-22 04:23:23 +01:00
2026-08-21 18:36:21 +01:00
2026-05-13 00:28:24 +01:00
2026-05-13 00:28:24 +01:00
2026-03-18 16:06:30 +00:00
2026-07-07 09:54:14 +01:00
2026-07-08 14:36:55 +01:00
2026-07-23 22:33:07 +01:00
2026-07-24 12:42:16 +01:00
2026-07-22 16:29:44 +01:00
2026-08-23 23:39:20 +01:00
2026-09-24 10:42:33 +01:00
2026-09-07 12:00:48 +01:00
2026-09-07 12:00:48 +01:00
2026-08-13 23:26:08 +01:00
2026-07-24 12:42:16 +01:00
2026-07-12 05:23:02 +01:00
2026-08-14 01:12:49 +01:00
2026-08-14 01:12:49 +01:00
2026-08-14 01:12:49 +01:00
2026-10-01 05:51:09 +01:00
2026-04-05 13:18:30 +01:00
2026-04-28 15:49:18 +01:00
2026-04-28 15:49:18 +01:00
2026-04-28 16:36:09 +01:00
2026-03-18 16:06:30 +00:00
2026-05-04 09:33:19 +01:00
2026-10-03 21:53:22 +01:00
2026-09-24 17:33:21 +01:00
2026-10-04 00:15:28 +01:00
2026-09-06 08:31:26 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-10 12:54:12 +01:00
2026-08-21 14:56:11 +01:00
2026-08-12 07:32:50 +01:00
2026-03-18 16:06:30 +00:00
2026-07-28 13:57:48 +01:00
2026-09-10 02:01:25 +01:00
2026-08-21 14:56:07 +01:00
2026-09-24 10:24:29 +01:00
2026-09-01 14:36:49 +01:00
2026-09-01 15:26:48 +01:00
2026-05-05 12:59:59 +01:00
2026-03-18 16:06:30 +00:00
2026-09-01 13:59:36 +01:00
2026-07-22 16:29:44 +01:00
2026-04-28 19:12:21 +01:00
2026-04-11 16:47:37 +01:00
2026-07-04 22:44:43 +01:00
2026-08-02 00:04:40 +01:00
2026-05-05 12:59:59 +01:00
2026-04-28 19:12:21 +01:00
2026-08-04 14:19:47 +01:00
2026-08-04 14:19:47 +01:00
2026-04-16 10:17:37 +01:00
2026-08-08 16:48:19 +01:00
2026-07-14 16:18:21 +01:00
2026-07-14 16:18:21 +01:00
2026-07-14 16:18:21 +01:00
2026-09-19 17:26:25 +01:00
2026-06-11 13:10:16 +01:00
2026-03-18 16:06:30 +00:00
2026-02-02 22:02:22 +00:00
2025-12-12 11:05:24 +00:00
2026-04-22 00:39:53 +01:00
2026-07-23 06:59:05 +01:00
2026-05-04 22:43:35 +01:00
2026-08-08 12:07:40 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-08-31 19:47:01 +01:00
2026-05-12 21:10:58 +01:00
2026-07-22 15:53:34 +01:00
2026-05-12 21:10:58 +01:00
2026-06-09 21:42:21 +01:00
2026-07-24 12:42:16 +01:00
2026-07-24 12:42:16 +01:00
2026-03-18 16:06:30 +00:00
2026-01-19 19:26:18 +00:00
2025-12-10 00:29:07 +00:00
2026-08-26 13:54:55 +01:00
2026-09-02 11:15:22 +01:00
2026-05-10 22:59:23 +01:00
2026-06-03 12:29:37 +01:00
2026-06-23 17:26:15 +01:00
2026-03-18 16:06:30 +00:00
2026-06-03 12:29:37 +01:00
2026-03-18 16:06:30 +00:00
2026-08-21 14:56:04 +01:00
2026-04-22 05:42:45 +01:00
2026-08-07 21:38:47 +01:00
2026-03-18 16:06:30 +00:00
2026-04-11 16:47:37 +01:00
2026-04-11 16:47:37 +01:00
2026-06-09 21:42:21 +01:00
2026-06-03 12:29:37 +01:00
2026-06-03 12:29:37 +01:00
2026-06-03 12:29:37 +01:00
2026-08-21 14:56:07 +01:00
2026-09-08 21:14:29 +01:00
2026-03-18 16:06:30 +00:00
2026-09-08 11:37:20 +01:00
2026-03-18 16:06:30 +00:00
2026-07-07 09:54:14 +01:00
2026-04-29 16:25:09 +01:00
2026-08-09 13:36:07 +01:00
2026-07-10 09:53:09 +01:00
2026-07-09 09:52:59 +01:00
2026-08-31 00:43:42 +01:00
2026-09-10 00:39:00 +01:00
2026-09-04 11:40:20 +01:00
2026-07-10 09:53:09 +01:00
2026-03-18 16:06:30 +00:00
2026-07-07 15:12:59 +01:00
2026-09-29 13:19:54 +01:00
2026-05-25 09:25:03 +01:00
2026-10-05 09:21:40 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-10-05 09:21:40 +01:00
2026-03-18 16:06:30 +00:00
2026-09-07 17:24:25 +01:00
2026-09-07 17:24:25 +01:00
2026-09-07 09:45:31 +01:00
2026-07-12 23:15:54 +01:00
2026-10-05 17:25:52 +01:00
2026-09-02 11:15:22 +01:00
2026-09-02 11:15:22 +01:00
2026-07-18 11:59:05 +01:00
2026-07-18 11:59:05 +01:00
2026-08-14 12:52:51 +01:00
2026-08-14 03:11:10 +01:00
2026-10-05 17:24:27 +01:00
2026-08-08 12:07:40 +01:00
2026-05-25 21:47:12 +01:00
2026-05-25 21:47:12 +01:00
2026-04-22 00:39:53 +01:00
2026-08-31 00:43:42 +01:00
2026-06-10 10:52:05 +01:00
2026-08-30 21:44:32 +01:00
2026-05-21 15:15:23 +01:00
2026-05-21 15:15:23 +01:00
2026-06-23 17:26:15 +01:00
2026-01-19 19:26:18 +00:00
2026-06-23 17:26:15 +01:00
2026-09-07 12:00:48 +01:00
2026-09-07 12:00:48 +01:00
2026-07-13 11:04:09 +01:00
2026-09-07 12:00:48 +01:00
2026-09-07 12:00:48 +01:00
2026-03-18 16:06:30 +00:00
2026-02-04 14:35:08 +00:00
2026-05-04 09:33:19 +01:00
2026-04-08 20:42:36 +01:00
2026-06-10 10:52:05 +01:00
2026-08-21 18:36:21 +01:00
2026-05-16 13:57:53 +01:00
2026-03-18 16:06:30 +00:00
2026-09-09 11:00:59 +01:00
2026-10-05 13:20:08 +01:00
2026-09-09 11:00:59 +01:00
2026-09-10 17:51:49 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-06-03 23:14:25 +01:00
2026-10-05 13:20:08 +01:00
2026-04-22 00:39:53 +01:00
2026-07-23 22:11:48 +01:00
2026-02-02 18:59:44 +00:00
2026-02-02 23:01:29 +00:00
2026-08-09 13:36:07 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-07-07 20:37:18 +01:00
2026-03-18 16:06:30 +00:00
2026-08-05 14:34:50 +01:00
2026-04-26 17:26:16 +01:00
2026-01-22 00:30:15 +00:00
2026-07-22 15:53:34 +01:00
2026-08-24 10:21:10 +01:00
2026-08-24 10:21:10 +01:00
2026-02-04 15:01:09 +00:00
2026-04-22 00:39:53 +01:00
2026-05-01 21:36:28 +01:00
2026-08-27 19:13:32 +01:00
2026-07-01 10:38:57 +01:00
2026-08-27 19:13:32 +01:00
2026-07-29 20:09:23 +01:00
2026-07-22 13:41:09 +01:00
2026-04-30 12:53:29 +01:00
2026-04-11 16:47:37 +01:00
2026-04-11 16:47:37 +01:00
2026-05-16 13:57:53 +01:00
2026-07-22 15:53:34 +01:00
2026-09-02 11:15:22 +01:00
2026-09-02 11:15:22 +01:00
2026-06-10 17:48:11 +01:00
2026-06-10 17:48:11 +01:00
2026-03-25 22:27:35 +00:00
2026-06-10 17:10:30 +01:00
2026-03-26 09:15:15 +00:00
2026-03-26 22:58:27 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-02-04 10:28:41 +00:00
2026-08-21 18:36:21 +01:00
2026-08-21 18:36:21 +01:00
2026-08-27 18:20:03 +01:00
2026-08-27 18:20:03 +01:00
2026-08-21 18:36:21 +01:00
2026-09-02 08:53:50 +01:00
2026-07-23 11:19:50 +01:00
2026-03-18 16:06:30 +00:00
2026-04-26 17:26:16 +01:00
2026-10-05 22:45:56 +01:00
2026-04-26 15:27:10 +01:00
2026-04-28 16:36:09 +01:00
2026-03-26 17:12:27 +00:00
2026-08-21 14:56:07 +01:00
2026-08-29 23:48:28 +01:00
2026-09-08 21:29:36 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-22 01:18:33 +01:00
2026-04-18 00:06:50 +01:00
2026-08-21 14:56:07 +01:00
2026-09-08 11:37:20 +01:00
2026-10-05 13:20:08 +01:00
2026-10-05 13:20:08 +01:00
2026-05-03 12:25:56 +01:00
2026-10-01 09:22:15 +01:00
2026-08-21 18:36:21 +01:00
2026-06-09 21:42:21 +01:00
2026-02-04 10:28:41 +00:00
2026-02-04 10:28:41 +00:00
2026-08-29 23:48:28 +01:00
2026-02-04 10:28:41 +00:00
2026-04-22 00:39:53 +01:00
2026-08-16 11:15:16 +01:00
2026-03-26 21:43:30 +00:00
2026-04-26 17:26:16 +01:00
2026-03-26 21:43:30 +00:00
2026-03-26 21:43:30 +00:00
2026-09-07 17:24:25 +01:00
2026-07-10 12:45:27 +01:00
2026-05-07 21:58:06 +01:00
2026-07-22 16:18:00 +01:00
2026-03-18 16:06:30 +00:00
2026-09-05 16:04:12 +01:00
2026-03-18 16:06:30 +00:00
2026-04-28 16:36:09 +01:00
2026-04-26 17:26:16 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-08-05 17:33:57 +01:00
2026-08-30 18:40:06 +01:00
2026-08-31 00:06:24 +01:00
2026-07-23 22:33:07 +01:00
2026-09-06 12:45:40 +01:00
2026-08-08 09:42:21 +01:00
2026-06-03 14:42:43 +01:00
2026-08-31 19:47:01 +01:00
2026-09-06 17:42:24 +01:00
2026-10-05 13:20:08 +01:00
2026-07-30 16:25:36 +01:00
2026-07-30 16:25:36 +01:00
2026-08-12 09:20:01 +01:00
2026-08-12 09:20:01 +01:00
2026-08-14 00:18:23 +01:00
2026-08-14 00:18:23 +01:00
2026-07-07 16:35:07 +01:00
2026-05-21 16:26:00 +01:00
2026-05-03 13:19:51 +01:00
2026-08-31 00:43:42 +01:00
2026-05-03 12:48:01 +01:00
2026-04-29 16:25:09 +01:00
2026-04-01 12:00:31 +01:00
2026-05-21 16:15:53 +01:00
2026-07-09 19:46:40 +01:00
2026-09-10 06:52:38 +01:00
2026-09-10 06:52:38 +01:00
2026-10-05 22:23:09 +01:00
2026-08-31 01:43:55 +01:00
2026-08-31 01:43:55 +01:00
2026-09-10 06:52:38 +01:00
2026-08-29 05:19:19 +01:00
2026-08-11 16:38:21 +01:00
2026-09-23 22:11:03 +01:00
2026-09-15 02:22:04 +01:00
2026-07-10 01:28:33 +01:00
2026-09-23 22:11:03 +01:00
2026-08-31 00:43:42 +01:00
2026-09-17 12:35:20 +01:00
2026-08-11 16:38:21 +01:00
2026-08-30 18:00:33 +01:00
2026-05-04 00:50:14 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-07-30 12:06:19 +01:00
2026-08-28 07:08:08 +01:00
2026-08-09 13:36:07 +01:00
2026-07-07 16:35:07 +01:00
2026-08-09 13:36:07 +01:00
2026-08-09 13:36:07 +01:00
2026-07-23 06:34:03 +01:00
2026-09-19 17:26:25 +01:00
2026-04-11 14:51:10 +01:00
2026-05-03 12:48:01 +01:00
2026-07-07 22:04:46 +01:00
2026-04-01 16:36:44 +01:00
2026-07-09 19:46:40 +01:00
2026-07-09 19:46:40 +01:00
2026-07-23 07:15:13 +01:00
2026-03-18 16:06:30 +00:00
2026-09-01 01:02:17 +01:00
2026-05-05 12:59:59 +01:00
2026-08-08 12:07:40 +01:00
2026-07-23 22:33:07 +01:00
2026-04-07 10:24:53 +01:00
2026-03-18 16:06:30 +00:00
2026-06-03 12:29:37 +01:00
2026-08-20 14:27:12 +01:00
2026-07-28 13:28:55 +01:00
2026-03-18 16:06:30 +00:00
2026-10-01 13:28:21 +01:00
2026-04-26 17:26:16 +01:00
2026-03-18 16:06:30 +00:00
2026-07-28 11:13:37 +01:00
2026-10-01 13:28:21 +01:00
2026-08-05 17:33:57 +01:00
2026-08-05 17:33:57 +01:00
2026-08-05 17:33:57 +01:00
2026-08-05 17:33:57 +01:00
2026-09-02 11:09:25 +01:00
2026-08-27 19:44:02 +01:00
2026-09-27 23:50:23 +01:00
2026-08-30 13:49:58 +01:00
2026-08-30 13:49:58 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-02-04 14:48:03 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-04 23:16:15 +01:00
2026-03-18 16:06:30 +00:00
2026-08-31 19:47:01 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-28 16:36:09 +01:00
2026-03-29 19:50:31 +01:00
2026-03-29 20:36:43 +01:00
2026-07-22 16:18:00 +01:00
2026-03-29 20:13:39 +01:00
2026-10-04 09:45:21 +01:00
2026-10-03 23:58:11 +01:00
2026-10-03 23:58:11 +01:00
2026-03-18 16:06:30 +00:00
2026-08-21 18:36:21 +01:00
2026-06-04 11:49:17 +01:00
2026-03-18 16:06:30 +00:00
2026-06-04 14:07:14 +01:00
2026-07-23 22:05:09 +01:00
2026-09-24 10:42:33 +01:00
2026-06-04 08:39:31 +01:00
2026-08-29 23:48:28 +01:00
2026-09-22 18:42:51 +01:00
2026-09-01 16:16:56 +01:00
2026-03-18 16:06:30 +00:00
2026-07-23 07:15:13 +01:00
2026-09-01 16:16:56 +01:00
2026-03-18 16:06:30 +00:00
2026-06-02 23:54:48 +01:00
2026-08-21 14:56:07 +01:00
2026-07-21 21:24:15 +01:00
2026-09-30 23:39:35 +01:00
2026-09-30 23:39:35 +01:00
2026-03-18 16:06:30 +00:00
2026-04-22 03:06:22 +01:00
2026-09-13 10:59:02 +01:00
2026-07-23 22:06:57 +01:00
2026-06-03 12:29:37 +01:00
2026-04-22 04:46:13 +01:00