rcourtman
3465804dd1
Stop mock-mode callers that read identity rebuilding the estate view ( #2798 )
...
Follow-up to #2778 . Stacks cleanly on main; the contract prose
cross-references the wiring change in #2796 , so land that first if both
are open.
## What was wrong
In mock mode the unified view is keyed on the fixture data version,
which advances on every metric tick, and building it for the default
1,776-resource estate costs about half a second of CPU (many seconds on
a starved process). #2778 moved the metrics-target lookup onto the
fixture structure revision. The other callers that read only what the
estate lists and how it connects still rebuilt the whole view after each
tick: at startup they made 42 view requests, all misses (the
Docker-alert prune 18, the connection snapshots 13, the host-agent
evaluation 8, the chart prewarm 2, the metrics-target lookup 1), and
with no client connected the monitor tick alone rebuilt the estate about
every nine seconds.
## What changes
- Callers that read identity and topology share the view built for the
current structure revision and operator links
(`currentStructureUnifiedStateView`, `GetUnifiedStructureReadState`,
`currentModeStructureReadState`, in
`internal/monitoring/unified_structure_view.go`; `mockMetricsTarget`
uses the same cache reader): the Docker-alert prune, the workload chart
prewarm, the demo Patrol operator-state resolver, and the host-agent
evaluation. `evaluateHostAgents`, which runs on every monitor tick, now
lists nodes only when an offline host names a linked node.
- The connection-degraded alert feed keeps only platform rows
(`snapshotConnectionsForAlerts` drops every agent row, and a PBS row's
reported node name only becomes a host alias that its snapshot does not
carry). It now builds the aggregator inputs with `platformRowsOnly`, so
it no longer reads the hosts, their desired-config fingerprints or the
PBS instances. The connections endpoint, diagnostics and runtime
inventory still read them.
- Deliberately not moved:
- The mock storage chart (`resolveMockStorageTotal`): a linked pool
takes its capacity from whichever source was seen last, which a tick can
move without a structure change. It stays on the data-version view, read
once per request instead of once per uncached pool.
- `linkedHostForNode`, `getHostAgentTemperatureForNode` and
`carriedTemperatureOutlivesAgentLease` (only reachable with
`PULSE_MOCK_KEEP_REAL_POLLING`): they read a host's status, disks,
sensors and report lease, which a tick moves. Hoisting them would need
the read state threaded through the node poller, and they run after
startup, so they stay as they were.
Real mode is unchanged.
## Measured (pulse-dev, probe builds, one pinned core, GOMAXPROCS=1,
host load 30 to 110, single runs)
| | #2796 alone | with this change |
|---|---|---|
| estate view builds before the listener answers | 2 | 1 |
| estate builds, no client connected, 299 s of life | 33 | 2 (both at
startup) |
| process CPU over a 180 s steady window | 12.3 s | 3.3 s |
A separate run of the pre-#2796 build used 9.0 s over that window, so
read 12.3 against 3.3 as the comparison rather than as exact
percentages. The public demo host runs a mock estate, so the
steady-state saving is the one that matters there.
## Verification
- New tests (in registered proof files): no consumer of the structure
view rebuilds the view after a fixture tick (Docker prune, structure
node listing, workload prewarm, host-agent evaluation including an
offline host that names a linked node); the data-version view still
rebuilds; the structure view follows a structural fixture change and an
operator link; lazy correlation lists nodes only for a linked host; a
storage chart reads the estate only when it is not cached; the alert
feed does not rebuild the view, its platform rows equal the full
aggregator's, and configured PVE/PBS/PMG rows survive without the hosts;
the Patrol resolver does not rebuild the view.
- Negative controls (each fails the named test): prune, prewarm, eager
node listing, structure node listing, alert feed and Patrol resolver
each moved back to the data-version view, and a storage chart that reads
the estate before checking its cache.
- `go vet` and the targeted tests on pulse-dev.
## Known limits
- The structure view can be several ticks old, so a caller on it must
not read status, metric values, timestamps, sensors or anything a link
merges by freshness; the contract says so. The fixture sets pod node
names (which feed the platform aliases a Patrol reference can resolve
through) when the estate is built, not on a tick.
- `pbsInstanceFromReadStateView` never copies `NodeName`, so
`pbsReportedNodeNamesByInstance` appears to feed empty host aliases on
the connections endpoint. That is a separate bug, not changed here.
- The batch sharing of the storage chart's read (`sync.OnceValue` in
`GetStorageMetricsForChartBatch`) is not pinned by a test; the
single-chart laziness is.
Not a feature: no demand-ledger entry.
2026-10-10 13:44:54 +01:00
..
2026-10-05 23:38:18 +01:00
2026-08-31 23:52:25 +01:00
2026-10-07 22:36:57 +01:00
2026-08-21 14:56:04 +01:00
2026-08-21 14:56:04 +01:00
2026-10-07 23:14:49 +01:00
2026-10-08 07:00:10 +01:00
2026-10-10 08:10:56 +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-10-08 02:44:07 +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 23:38:18 +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-10-06 00:36:41 +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-10-07 14:19:53 +01:00
2026-10-08 11:03:46 +01: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-08 11:03:46 +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-10-10 07:46:45 +01:00
2026-10-10 07:46:45 +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-10-10 07:46:45 +01:00
2026-10-10 07:46:45 +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-10-08 02:44:07 +01:00
2026-10-08 04:33:06 +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-10-07 23:14:49 +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-10-07 12:36:24 +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-10-08 06:54:46 +01:00
2026-10-10 12:06:38 +01:00
2026-10-10 07:37:03 +01:00
2026-08-24 22:45:59 +01:00
2026-10-10 12:37:42 +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-10 09:17:04 +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-10-07 13:46:17 +01:00
2026-10-07 13:46:17 +01:00
2026-05-05 12:59:59 +01:00
2026-06-03 12:29:37 +01:00
2026-10-07 20:04:07 +01:00
2026-10-07 20:04:07 +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-10-07 19:31:50 +01:00
2026-10-07 19:31:50 +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
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-10-06 00:36:41 +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-09 20:44:07 +01:00
2026-09-24 17:33:21 +01:00
2026-10-09 20:44:07 +01:00
2026-10-04 00:15:28 +01:00
2026-10-09 20:44:07 +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
2026-10-07 19:31:50 +01:00
2026-08-26 13:54:55 +01:00
2026-10-08 00:57: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-10-08 17:22:29 +01:00
2026-08-14 12:52:51 +01:00
2026-08-14 03:11:10 +01:00
2026-10-05 19:02:00 +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-10-07 23:14:49 +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-10-07 12:36:24 +01:00
2026-03-25 22:27:35 +00:00
2026-10-07 21:00:34 +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-10-06 23:09:52 +01:00
2026-10-07 12:36:24 +01:00
2026-10-07 12:36:24 +01: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-10-08 06:27:50 +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-10-07 23:14:49 +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-07 23:14:49 +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-10-08 08:53:19 +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-10-07 23:14:49 +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-10 12:37:42 +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-10-10 12:37:42 +01:00
2026-08-14 00:18:23 +01:00
2026-07-07 16:35:07 +01:00
2026-10-07 23:02:13 +01:00
2026-05-03 13:19:51 +01:00
2026-10-07 23:02:13 +01:00
2026-10-07 19:31:50 +01:00
2026-10-07 23:02:13 +01:00
2026-10-07 23:02:13 +01:00
2026-10-07 23:02:13 +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-07 23:14:49 +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-10-07 23:14:49 +01:00
2026-10-07 23:14:49 +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-06 11:05:34 +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-06 10:40:18 +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-05 20:19:42 +01:00
2026-10-06 06:30:24 +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-10-07 23:14:49 +01:00
2026-10-07 23:14:49 +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