From d7d51765374d10db0ba5ddb3039ea0c0ff9a82dc Mon Sep 17 00:00:00 2001 From: Viktor Somogyi-Vass Date: Wed, 15 Jul 2026 11:49:31 +0200 Subject: [PATCH 1/6] docs(inkless:consolidation): Diskless Consolidation documentation --- docs/inkless/DISKLESS_CONSOLIDATION.md | 631 ++++++++++++++++++ docs/inkless/README.md | 5 + .../img/consolidation/log-continuity-1.png | Bin 0 -> 96357 bytes .../img/consolidation/log-continuity-2.png | Bin 0 -> 97823 bytes docs/inkless/img/consolidation/retention.png | Bin 0 -> 70925 bytes .../img/consolidation/topic-transitions.png | Bin 0 -> 230114 bytes 6 files changed, 636 insertions(+) create mode 100644 docs/inkless/DISKLESS_CONSOLIDATION.md create mode 100644 docs/inkless/img/consolidation/log-continuity-1.png create mode 100644 docs/inkless/img/consolidation/log-continuity-2.png create mode 100644 docs/inkless/img/consolidation/retention.png create mode 100644 docs/inkless/img/consolidation/topic-transitions.png diff --git a/docs/inkless/DISKLESS_CONSOLIDATION.md b/docs/inkless/DISKLESS_CONSOLIDATION.md new file mode 100644 index 00000000000..3813689dc99 --- /dev/null +++ b/docs/inkless/DISKLESS_CONSOLIDATION.md @@ -0,0 +1,631 @@ +# Tiered Storage Consolidation for Diskless Topics + +Tiered Storage Consolidation (TS consolidation, internally "TS unification") continuously +distills diskless Write-Ahead Log (WAL) segments into classic Kafka log segments and tiers +them to remote storage. The result is a *consolidated diskless topic* (CDT): a topic that +writes through the diskless fast path but reads like a tiered topic, with the diskless WAL +acting as a temporary buffer rather than long-term storage. + +A consolidated diskless topic has both `diskless.enable=true` **and** +`remote.storage.enable=true`. The classic-to-diskless switch sets both atomically (see +[Classic to Diskless Switch](CLASSIC_TO_DISKLESS_SWITCH.md)), so a switched or born-consolidated +topic is always consolidating. + +The feature is implemented and gated behind the `diskless.remote.storage.consolidation.enable` +broker flag (which itself requires `diskless.allow.from.classic.enable=true`, managed replicas, +and `remote.log.storage.system.enable=true`). + + + +## Motivation + +In a diskless topic the brokers create WAL files to store partition data and nothing more. +These files are write-optimized segments that collect multiple partitions' data together. +While these files are very good and cost-efficient for writing, they perform worse for reads, +because extra compute power is required to piece together a continuous stream of partition +data. Classic Kafka mechanisms also expect Kafka log segments to be read and written. + +Transforming the WAL segments back into the Kafka log format removes burden from the +diskless coordinator, provides better read performance, and keeps the expected log format. + +## Migration Paths + +Migration between classic and diskless topics has several sub-cases, shown below. This +document covers TSU-1/2 (and the transitive TSU-3/5); the other paths are handled by the +[topic switch](CLASSIC_TO_DISKLESS_SWITCH.md) and the upstream tiered-storage framework. + +![Migration paths between classic, tiered, migrating, diskless, and consolidated diskless topics](img/consolidation/topic-transitions.png) + +- **TSU-1/2** (in scope): a diskless or migrating topic switches to a Consolidated Diskless +Topic. +- **TSU-3/5** (in scope): the transitive path from classic or tiered topics through +migrating/pure-diskless to CDT, enabled by TSU-1/2 plus the classic-to-diskless switch. +- **TS-2 / TSU-4** (out of scope): disabling consolidation to revert a CDT to a pure +diskless topic. CDT is a terminal state. +- **TS-4** (out of scope): a diskless→classic topic switcher. TS consolidation is a +subprocess of that larger problem, but solves a different problem. +- **Classic → Tiered**: already implemented by the remote storage framework. +- **Tiered → Classic**: will be implemented by KIP-950. + + + +## High-Level Architecture + + + +### General Read-Write + +The primary assumption is that diskless topics have leaders. Leadership and followers give +useful locality and caching guarantees. In a scenario where all brokers are replicas, +interconnectedness is high and the cache is inefficient (one replica is cached on all +brokers in the worst case). The other extreme, a single replica, is also suboptimal: while +it may work in smaller single-region and on-prem installations, it would incur extra +cross-region costs to fetch from the leader. + +The optimal scenario is similar to the well-known Kafka fetcher mechanism. A leader replica +handles produce traffic and replication. Consume traffic can be handled by the leader or by +followers (in a follower-fetch case). Interconnectedness is relatively low, cross-region +traffic is avoided (or pushed to bucket-side replication), and caching is more efficient +because cached segments are stored only where they are read. + +### Consolidation Pipeline + +In the produce flow, WAL segments are stored in object storage by the diskless coordinator +and stay there until `log.local.retention.ms` elapses, after which they are cleaned up. + +In the consolidation architecture, a fetcher-based component reads the oldest batches from +the diskless WAL (by order of insertion, to preserve ordering) and appends them to a +per-partition `UnifiedLog` via the `Partition` class. The `RemoteLogManager` then copies +those local segments to remote storage, exactly as it does for a classic tiered topic. Once +a batch is confirmed in remote storage, the corresponding WAL data is pruned. + +Consolidation pipeline: interleaved WALs are split into per-partition local segments and tiered to remote storage + +The consolidation pipeline is implemented as a specialized replica-fetcher that pulls from +the diskless tier (object storage + control plane) instead of from a leader broker. See +[Implementation](#implementation) for the component breakdown. + +### Log Continuity + +In Kafka tiered storage, tiered and local offsets can overlap, as defined by KIP-405. The +separation between diskless and classic local offsets is similar: in the usual scenario +diskless offsets overlap local offsets, because the local log is treated as a cache, not as +persistent storage. + +![Log continuity: diskless offsets overlap the local log](img/consolidation/log-continuity-1.png) + +Depending on the cleanup schedule, diskless logs may totally overlap local logs and even +reach deeper into the tiered offset range. This happens when older segments contain data +which has not yet been migrated to remote storage, so it cannot be deleted. + +![Log continuity: diskless offsets overlap both local and tiered offsets](img/consolidation/log-continuity-2.png) + +This is not a problem, because diskless segments are cleaned up periodically as they are +consolidated. The offset concepts in play are: + + +| Concept | Where it lives | Meaning | +| --------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| Log start offset | `UnifiedLog.logStartOffset` | The start of the whole (tiered + local) log. Advanced by RLM as remote segments are deleted. | +| Log end offset (LEO) | `UnifiedLog.logEndOffset` | The end of the local consolidated log. | +| Local log start offset | `UnifiedLog.localLogStartOffset` | Used for local retention; decides which local segments to delete. | +| Local log end offset | `UnifiedLog.logEndOffset` | The consolidation frontier: offsets up to here have been materialized locally; the fetcher copies offsets above this from the diskless tier. | +| Classic-to-diskless start offset (the *seal*) | `PartitionRegistration.classicToDisklessStartOffset` (KRaft metadata) | For a switched topic, the boundary between the classic prefix `[0, seal)` and the diskless region `[seal, LEO)`. Born-diskless topics have no seal. | +| Diskless WAL start | control plane `logs.log_start_offset` | The WAL prune frontier: the first surviving WAL record. Advanced by the pruner as batches are confirmed in remote storage. | +| Diskless end offset | the diskless LEO | The end of the diskless WAL; effectively the produce high-watermark. | + + + + +### Read Path + +With consolidation, a consumer fetch may be served from three sources: + +- **Tiered offset space**: classic log segments on remote storage (`[0, highestOffsetInRemoteStorage]`). +- **Diskless offset space**: WAL segments on remote storage. +- **WAL cache**: a local in-broker cache (a subset of the diskless offset space). + +Routing for a consolidating partition, in `ReplicaManager.fetchMessages`: + +- If the fetch offset falls in the tiered range (below `localLogStartOffset`), the request +routes to the `RemoteLogManager`, as for any tiered topic. +- If the fetch offset is within the local log, the local log is read. If the local read does +not satisfy `minBytes`, the broker **supplements** with a synchronous diskless fetch +starting at the local log end offset and merges the two via `ConcatenatedRecords.concat` +(see [Consumer-side supplement](#consumer-side-supplement)). This avoids parking the +consumer in the delayed-fetch purgatory at the local/diskless boundary when diskless data +is already available. +- If the fetch offset is at or beyond the local log end offset, the request is served from +the diskless subsystem (cache or object storage). + +For all-consolidating requests the supplement is applied inline and the response is produced +immediately. For mixed requests (consolidating + pure-diskless) the supplement and the +diskless fetch run concurrently in `DelayedFetch.onComplete`, so the latency is the slower +of the two, not their sum. + +#### Consumer-side supplement + +``` +consumer fetch (offset O, minBytes M) + | + +-- read local log [O, localLEO) + | + +-- bytes returned < M and O+read reached localLEO? + | yes + +-- synchronous diskless fetch from localLEO + +-- merge local ++ diskless via ConcatenatedRecords + +-- return (HW/LSO taken from the diskless supplement) + | no (still inside local log, or error) + +-- return local result +``` + +The supplement starts where the local read left off (not at a fixed boundary), and only +fires once the local log is exhausted up to `localLEO`. Supplementing from below the seal +would stitch the local prefix directly onto the diskless range and silently drop the +committed range `[supplementStart, seal)`, so it is deliberately suppressed there. + +#### Reading from remote after the WAL is pruned + +Once a batch is consolidated to remote and the WAL is pruned, the data below the diskless +WAL start lives *only* in the remote tier. If a fetch (e.g. after local-log loss, or a +follower catching up) targets an offset in `[logStartOffset, disklessWALStart)`, +`DisklessLeaderEndPoint.fetch` signals `OFFSET_MOVED_TO_TIERED_STORAGE` (clearing the +records). The stock Kafka tier-state machine then rebuilds the leader-epoch cache and +producer snapshot from remote before resuming the WAL fetch. + +This is the core read-from-remote path for consolidated topics: it is what makes a +consolidated topic survive losing every local copy. + +#### Followers + +Followers must never replicate diskless records into their local log. When a partition has +fully switched and a follower fetches at or beyond the seal, `fetchMessages` returns an +empty response with the high watermark clamped to the seal, so the classic fetcher loop +sees the partition as caught up and goes idle. The follower keeps its classic local prefix +intact and can still serve consumer reads from it. The consolidation fetcher (below) is the +component that materializes the diskless region into the local log; it runs on managed +replicas only. + +### Cross-tier log start offset + +A born-consolidated topic's earliest readable offset eventually lives only in the remote +tier: the diskless WAL is pruned and local segments are evicted, yet `ListOffsets(EARLIEST)` +must still point at real data. When `retention.ms` expires the oldest remote segments, only +the partition's classic leader observes the earliest offset advancing: its +`RemoteLogManager` raises `UnifiedLog.logStartOffset` as it deletes them. That value is +broker-local: followers fetch from the diskless WAL and never learn it, and the control +plane's `log_start_offset` tracks only the WAL prune frontier, not the remote-retention +frontier. Without this feature, `ListOffsets(EARLIEST_TIMESTAMP)` (`--time -2`) served by +any non-leader broker returned a stale `0`, pointing consumers at data that no longer +exists. `EARLIEST_LOCAL_TIMESTAMP` (`--time -4`) is intentionally unaffected; it must keep +returning the diskless WAL log start. + +The leader is the only participant that *knows* the cross-tier earliest offset, but any +broker must be able to *serve* it. The design makes the **control plane the source of +truth**, with a short-TTL cache: + +- **Write path (leader).** `CrossTierLogStartReporter` buffers per-partition updates, drops + non-advancing ones, coalesces, and flushes to the control plane once a second + (write-through to the cache on success). It is triggered from the RLM callback in + `BrokerServer`/`ReplicaManager` on the leader, and is a no-op for non-consolidating/classic + topics and for strictly negative offsets. `0` is meaningful and *is* reported: it is the + cross-tier earliest of a freshly-tiered born-consolidated topic whose WAL prune frontier + has advanced above it. +- **Read path (any broker).** `FetchOffsetHandler` serves `EARLIEST` on a consolidating + diskless topic read-through the `CrossTierLogStartCache` first; on a miss it queries the + control plane and populates the cache. `DisklessFetchOffsetRouter` returns + `max(classic-leader leg, control-plane leg)` for consolidating partitions, so the freshest + authoritative value wins regardless of which broker serves the request (the classic leg is + authoritative on the leader, the control-plane leg on followers). +- **Cache.** Caffeine-backed with a TTL and a monotonic `put` (a `Null` implementation + disables it); owned by `SharedState`. A stale entry can only ever be *too low* (the safe direction), so it only delays when a retention advance becomes visible off-leader. +- **Storage.** The value is kept in `logs.remote_log_start_offset` (migration `V16`), + advanced only forward via `advance_cross_tier_log_start_offset_v1`. `list_offsets_v1` + (migration `V17`) returns it for `EARLIEST`, while `EARLIEST_LOCAL` keeps returning + `log_start_offset`. + +Write pressure is negligible: remote retention advances rarely (per RLM expiration cycle), +updates are coalesced per partition and flushed once a second, and only strictly-advancing +values are sent. + +The configuration and JMX metrics for this feature are listed in +[Configuration](#configuration) and [Metrics](#metrics). The system test is +`consolidation_retention_across_tiers_test.py` (`RetentionReclaimsAcrossTiersTest`), which +verifies the earliest offset advances past zero (and no further than a surviving cohort) +after retention reclaims data across tiers. + +> **Not yet covered.** Time-based reclaim (`retention.ms`) drives the earliest offset in +> tests; `retention.bytes`-driven reclaim of the earliest offset is not yet exercised. +> `DeleteRecords` across tiers on a consolidating topic is also not yet covered. + +## Implementation + +The chosen design reuses the replica-fetcher machinery with a custom `LeaderEndPoint` that +fetches from the diskless tier instead of from a leader broker. This maximizes reuse of +battle-tested components (`UnifiedLog`, `RemoteLogManager`, `AbstractFetcherThread`) while +keeping the diskless-specific logic isolated. + +Consolidation component architecture + +### Components + + +| Component | Role | +| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ConsolidationFetcherManager` | Custom `AbstractFetcherManager`. Owns `ConsolidationFetcherThread`s; receives partition add/remove from `ReplicaManager`. | +| `ConsolidationFetcherThread` | Extends `ReplicaFetcherThread`. Overrides `toMemoryRecords` (for `ConcatenatedRecords`) and `processPartitionData` (to stamp the diskless leader epoch and update lag metrics). | +| `DisklessLeaderEndPoint` | Custom `LeaderEndPoint`. Fetches batch data and offsets from the diskless tier via the shared `FetchHandler`/`FetchOffsetHandler`; implements `OffsetsForLeaderEpoch` against the seal/diskless LEO; signals `OFFSET_MOVED_TO_TIERED_STORAGE`. | +| `ConsolidationReconciler` | Decides, per partition, whether consolidation can start now (`Ready`), should wait (`Retry`), or cannot (`Failed`). | +| `ConsolidatedDisklessLogPruner` | Scheduled job that prunes WAL batches once they are confirmed in remote storage. | +| `ConsolidationMetrics` | Per-partition and broker-aggregate lag gauges. | + + +All of these are wired into `ReplicaManager` and are only instantiated when +`diskless.remote.storage.consolidation.enable=true`. + +### Sequence + +Consolidation sequence: ReplicaManager arms a fetcher, which pulls batches from the diskless tier, appends to UnifiedLog, and lets RLM tier + the pruner reclaim the WAL + +**Current implementation** — adds a reconciler gate, diskless leader epoch `E_d`, the `OFFSET_MOVED_TO_TIERED_STORAGE` recovery path, cold-path reads with a dedicated quota, and moves WAL pruning out of RLM into a scheduled `ConsolidatedDisklessLogPruner`. + +```mermaid +sequenceDiagram + autonumber + participant RM as ReplicaManager + participant CR as ConsolidationReconciler + participant CFM as ConsolidationFetcherManager + participant CFT as ConsolidationFetcherThread + participant DLE as DisklessLeaderEndPoint + participant UL as UnifiedLog + participant FH as FetchHandler + participant RLM as RemoteLogManager + participant PRUNER as ConsolidatedDisklessLogPruner + participant CP as Control Plane + participant RS as Remote Storage + + rect rgba(255, 255, 255, 0) + note over RM,UL: Arm - on applyDelta() + RM->>UL: create Partition + UnifiedLog
(diskless.enable=true and remote.storage.enable=true) + RLM->>UL: findHighestRemoteOffset(), seed highestOffsetInRemoteStorage + RM->>CR: reconcile partition + CR->>CR: Ready / Retry / Failed
(diskless implies remote invariant, seal, initial offset) + CR->>CFM: arm fetcher (Ready only) + CFM->>CFT: assign partition
(initialFetchOffset, prune floor >= max(seal, logStartOffset)) + end + + rect rgba(255, 255, 255, 0) + note over CFT,RS: Fetch loop - maybeTruncate() then maybeFetch() + CFT->>DLE: buildFetch() / fetch() + DLE->>UL: next fetch offset (local LEO) + DLE->>FH: fetch(offset) + FH->>CP: find batches (on coordinate-cache miss) + CP-->>FH: batch coordinates + FH->>RS: read batch data (cold path, bypass ObjectCache) + RS-->>FH: records + FH-->>DLE: ConcatenatedRecords + DLE-->>CFT: fetchResponse + CFT->>CFT: stamp diskless leader epoch E_d + CFT->>UL: append to local log + UL-->>CFT: ack + note over CFT,FH: Rate-limited by diskless.consolidation.fetch.rate.limit.bytes.per.second (dynamic) + end + + alt fetch offset below disklessWALStart (WAL pruned, data remote-only) + DLE-->>CFT: OFFSET_MOVED_TO_TIERED_STORAGE + CFT->>RS: rebuild leader-epoch cache + producer snapshot from remote + RS-->>CFT: restored state + CFT->>DLE: resume fetch at remote-restored offset + end + + rect rgba(255, 255, 255, 0) + note over RLM,RS: Tier - async, leader only + RLM->>RS: copy closed local segment to remote + RS-->>RLM: ack + RLM->>UL: update highestOffsetInRemoteStorage + end + + rect rgba(255, 255, 255, 0) + note over PRUNER,RS: WAL prune - scheduled, every inkless.consolidation.cleanup.interval.ms + PRUNER->>UL: read highestOffsetInRemoteStorage + PRUNER->>PRUNER: safe prune offset = getSafeConsolidatedDisklessPruneOffset
(floor >= max(seal, logStartOffset)) + PRUNER->>CP: prune_batches_below_highest_tiered_offset_v1 + CP->>RS: delete WAL batches with last_offset <= highestOffsetInRemoteStorage + CP->>CP: advance logs.log_start_offset + note over CP,RS: Empty WAL files are removed by the existing file-cleaner path + end + + note over UL: Local segments are reclaimed by standard local retention (local.retention.* via localLogStartOffset), not by consolidation.
Cross-tier earliest offset and consumer-side supplement are covered in their own sections. +``` + +1. On `applyDelta()` in `ReplicaManager`, a partition change kicks off the process. + `ReplicaManager` creates `Partition`s and `UnifiedLog`s for diskless partitions where + both `diskless.enable=true` and `remote.storage.enable=true`, and the + `ConsolidationReconciler` decides whether to arm a consolidation fetcher for each. +2. Once armed, the partition is assigned to a `ConsolidationFetcherThread`. The thread's + `leader` is a `DisklessLeaderEndPoint`. The fetch loop is the standard + `maybeTruncate()` → `maybeFetch()`: + - `buildFetch()` constructs fetch requests for each partition it fetches. + - `fetch()` calls the `FetchHandler`, which resolves batch coordinates (from the + coordinate cache or the control plane) and batch data (from the caffeine cache or + object storage, via the cold path; see [Cache pollution](#cache-pollution-cold-path)). + - The returned records are appended to the local `UnifiedLog`. +3. The `RemoteLogManager` asynchronously copies closed local segments to remote storage, + updates `highestOffsetInRemoteStorage` on the `UnifiedLog`, and the + `ConsolidatedDisklessLogPruner` marks the now-tiered WAL batches for deletion in the + control plane, advancing the diskless WAL start. + + + +### ConsolidationReconciler state machine + +The reconciler runs per partition before a fetcher is armed. It enforces the +`diskless.enable ⟹ remote.storage.enable` invariant and handles the seal boundary. + +```mermaid +flowchart TD + start([Partition becomes online]) --> seal{classicToDisklessStartOffset?} + seal -- "NO_CLASSIC_TO_DISKLESS_START_OFFSET\n(born-diskless / born-consolidated)" --> ready[Ready: arm at initialFetchOffset] + seal -- "SWITCH_PENDING" --> retry[Retry: classic switch in progress] + seal -- "seal >= 0" --> remote{remote.storage.enable?} + remote -- "off" --> failed[Failed: invariant violation\nsee DisklessWithoutRemoteStorageCount] + remote -- "on" --> leo{local LEO vs seal?} + leo -- "LEO < seal, leader" --> rebuild[Ready: arm at LEO\nrebuild classic prefix from remote\nvia OFFSET_MOVED_TO_TIERED_STORAGE] + leo -- "LEO < seal, follower" --> retry2[Retry: wait for classic catch-up fetcher] + leo -- "LEO >= seal" --> resume[Ready: arm at LEO\nprune floor at least max of seal and logStartOffset] + failed --> fenced[Partition stays online for reads/writes\nFailed flag clears on next leader-epoch change] +``` + + + +A `Failed` partition is **not** taken offline (it stays readable/writable), but +consolidation does not run, so the local log will not grow unbounded into an untiered diskless +log. `FailedPartitionsCount` and the controller-side `DisklessWithoutRemoteStorageCount` +metric surface the state to operators. Recovery for the invariant-violation case is to set +`remote.storage.enable=true` and trigger a leader-epoch change (restart, reassignment, or +preferred-leader election) so reconciliation re-runs. + +### Diskless leader epoch (E_d) for truncation + +Diskless records are produced with leader epoch 0. Appending them after a switched +partition's classic prefix (which carries higher classic epochs) would break +`LeaderEpochFileCache` monotonicity and disable `OffsetsForLeaderEpoch` divergence +truncation. + +To fix this, the controller captures a frozen **diskless leader epoch** `E_d` at the +`initDisklessLog` commit and persists it in KRaft metadata as a tagged field on +`PartitionRegistration`. Then: + +- `ConsolidationFetcherThread.maybeStampDisklessLeaderEpoch` stamps `E_d` onto each +materialized batch in place (the partition leader epoch is outside the batch CRC, so no +checksum recompute is needed). Born-diskless partitions with no `E_d` are left at epoch 0. +- `DisklessLeaderEndPoint.fetchEpochEndOffsets` answers `OffsetsForLeaderEpoch` for +followers: + - a queried epoch **below** `E_d` returns the **seal** (so a stale classic tail past the + seal truncates back to it; collapsing every classic epoch to the seal is correct + because the classic prefix `[0, seal)` is committed and identical across replicas); + - a queried epoch **at or above** `E_d` (or a born-diskless partition with no `E_d`) + returns the current diskless LEO. + +`DisklessLeaderEndPoint.resolveLeaderEpoch` applies the same region logic to list-offsets +results, because `FetchOffsetHandler` stamps a placeholder epoch of 0 that cannot be +trusted. + +> **Upgrade caveat.** Partitions switched before this change carry a seal but no `E_d`, so +> they fall through to the LATEST-LEO branch and keep the pre-divergence-truncation +> behavior until they are re-switched. This is a safe fallback, not a correctness +> regression. + + + +### Cache pollution: cold path + +Consolidation reads data that consumers will likely never touch. Routing those reads +through the same hot path as consumer fetches would pull WAL data into the caffeine +`ObjectCache` and evict useful entries. + +The mitigation that shipped is **cold-path routing** (KC-171), not OS-level page-cache +tricks. The consolidation `Reader` fetches old (lagging) data via `backgroundStorage`, +bypassing the `ObjectCache`, while recent data still uses the cache for hits on +producer/consumer-cached ranges. The cold path reuses the consolidation data thread pool +(no separate pool is allocated) and can be rate-limited as a safety valve via +`diskless.consolidation.fetch.lagging.request.rate.limit`. + +> The original design also considered direct I/O, `posix_fadvise(DONTNEED)`, memory-mapped +> files, and broker separation. None of these OS-level mitigations were implemented; the +> cold-path approach avoids polluting the *Inkless object cache* (the directly contended +> resource) without modifying Kafka's I/O layer. + + + +### Fetch quota + +Consolidation reads from object storage are decoupled from inter-broker replication +throttling by a dedicated `ReplicationQuotaManager` (`DisklessConsolidationFetch` quota +type), configured by `diskless.consolidation.fetch.rate.limit.bytes.per.second`. This is a +**dynamic** broker config (set to 0 to pause all consolidation fetches, +`Long.MAX_VALUE` to disable). The reconciler marks consolidating topics throttled when it +arms their fetchers, so bytes are recorded to the quota sensor. + +## Retention and Expiration + +Cleanup is asynchronous. Retention time and size configs for diskless topics are the same +as Kafka, except for the retention check interval: + + +| | Config | +| -------------------------- | ---------------------------------------------------------- | +| Retention time (whole log) | `retention.ms`, `log.retention.ms` / `.hours` / `.minutes` | +| Retention time (local log) | `local.retention.ms`, `log.local.retention.ms` | +| Retention size (whole log) | `retention.bytes`, `log.retention.bytes` | +| Retention size (local log) | `local.retention.bytes`, `log.local.retention.bytes` | +| WAL prune interval | `inkless.consolidation.cleanup.interval.ms` | + + +With remote logs in play, `retention.ms`/`retention.bytes` are the **whole-log** expiration +(local + remote), consistent with classic tiered topics. `local.retention.*` keep their +existing meaning for the local portion. + +![Retention: tiered [0,249], local [250,299], diskless [240,350]. Diskless overlaps both](img/consolidation/retention.png) + +### WAL pruning + +`ConsolidatedDisklessLogPruner` runs on each broker at `inkless.consolidation.cleanup.interval.ms` +(default 5 minutes). For each consolidating partition that is not in `SWITCH_PENDING`: + +1. It reads `highestOffsetInRemoteStorage` from the `UnifiedLog` (skips if negative: remote + not active yet). +2. It computes a **safe prune offset**: for born-diskless topics that is + `highestOffsetInRemoteStorage`; for switched topics it is + `partition.getSafeConsolidatedDisklessPruneOffset(...)`, which never prunes below the + seal or the partition's consolidation prune floor. +3. It submits a batch prune request to the control plane + (`prune_batches_below_highest_tiered_offset_v1`), which deletes WAL batches with + `last_offset <= highestOffsetInRemoteStorage` and advances `logs.log_start_offset`. +4. On success, the partition's consolidation prune floor is advanced + (`maybeAdvanceConsolidationPruneFloor`). + +The reconciler sets the prune floor to at least `max(seal, logStartOffset)` when it arms +consolidation (`ensureConsolidationPruneFloorAtLeast`), so a switched partition's classic +prefix is never pruned from the WAL before it is safely in remote. + +### Eliminating WAL segments + +- Batches that belong to a consolidating topic are deleted from the control plane once +their `last_offset <= highestOffsetInRemoteStorage`. +- Files that become empty (no remaining batch metadata) are removed by the existing +`mark_file_to_delete_v1` / file-cleaner path. + + + +## Reassignment + +Because all data is in object storage, reassignment uses the target replicas directly +(rather than a merged original + adding list). A consolidating partition that moves to a +new broker resumes consolidation from object storage: the reconciler arms the fetcher at +the current LEO, the fetcher drains the diskless WAL into the local log, and RLM tiers it. +`InklessConsolidatedDisklessReassignmentTest` covers this end-to-end. When a replica is +removed, its local log is cleaned up via the normal stop-replica path. + +## Configuration + +Broker-level configs live in `ServerConfigs` (no prefix) and `InklessConfig` (under the +`inkless.` prefix). The auto-generated reference is in [configs.rst](configs.rst). + +### Feature flag and dependencies + + +| Config | Default | Meaning | +| ---------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `diskless.remote.storage.consolidation.enable` | `false` | Enables the consolidation framework. Requires `diskless.allow.from.classic.enable=true`, `diskless.managed.replicas.enable=true`, and `remote.log.storage.system.enable=true`. | + + +Per topic, consolidation runs when `diskless.enable=true` **and** +`remote.storage.enable=true`. The classic-to-diskless switch sets both atomically; a +born-consolidated topic is created with both. + +### Consolidation fetcher tuning + + +| Config | Default | Meaning | +| ------------------------------------------------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `diskless.consolidation.num.fetchers` | `1` | Number of consolidation fetcher threads (parallelism, independent of `num.replica.fetchers`). | +| `diskless.consolidation.fetch.max.bytes` | `1 MiB` | Max bytes per partition per fetch iteration. Larger values reduce control-plane query frequency. | +| `diskless.consolidation.fetch.response.max.bytes` | `10 MiB` | Max total bytes accepted across all partitions in one fetch response. | +| `diskless.consolidation.fetch.min.bytes` | `1` | Min bytes to wait for before returning. | +| `diskless.consolidation.fetch.max.wait.ms` | `500` | Max time to wait for `minBytes` when there is little new data. | +| `diskless.consolidation.fetch.metadata.thread.pool.size` | `4` | Thread pool for control-plane (batch coordinate) queries. | +| `diskless.consolidation.fetch.data.thread.pool.size` | `8` | Thread pool for object-storage data fetches (also reused by the cold path). | +| `diskless.consolidation.fetch.find.batches.max.per.partition` | `0` (unlimited) | Max batch coordinates returned per partition per control-plane query. Larger values improve the coordinate cache hit rate. | +| `diskless.consolidation.fetch.rate.limit.bytes.per.second` | `Long.MAX_VALUE` (disabled) | Max object-storage read bandwidth for consolidation across all fetcher threads. **Dynamic**; `0` pauses consolidation. | +| `diskless.consolidation.fetch.lagging.request.rate.limit` | `0` (unlimited) | Max cold-path request rate (requests/sec) as a safety valve. | +| `inkless.consolidation.cleanup.interval.ms` | `300000` (5 min) | How often the WAL pruner runs on each broker. | + + + + +### Cross-tier log start offset (config) + + +| Config | Default | Meaning | +| ---------------------------------------------------- | ------- | --------------------------------------------------------------------------------------- | +| `inkless.consume.cross.tier.log.start.cache.enabled` | `true` | Enable the read-/write-through cross-tier earliest-offset cache. | +| `inkless.consume.cross.tier.log.start.cache.ttl.ms` | `10000` | Per-entry TTL; bounds how quickly a retention advance becomes visible off-leader. | +| `inkless.cross.tier.log.start.report.interval.ms` | `1000` | How often the leader flushes its observed remote log start offset to the control plane. | + + + + +## Metrics + +Registered under the `io.aiven.inkless.consolidation` group. The auto-generated reference +is in [metrics.rst](metrics.rst). + + +| MBean | Attribute | Meaning | +| --------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `io.aiven.inkless.consolidation:type=ConsolidationMetrics` | `ConsolidationTotalLag` | `disklessLEO - remoteLogEndOffset` (full pipeline: diskless → remote). Broker aggregate; per-partition gauges tagged with `topic`/`partition`. Only updated when remote storage is active. | +| | `ConsolidationLocalLag` | `disklessLEO - localLogEndOffset` (first hop: diskless → local). | +| | `ConsolidationDeletableMessages` | Messages already in remote storage, eligible for WAL pruning (`remoteLogEndOffset - localLogStartOffset`). | +| `io.aiven.inkless.consolidation:type=ConsolidationFetchMetrics` | `RecentDataRequestRate` / `LaggingConsumerRequestRate` | Hot-path (cache-hit) vs cold-path (object-storage) consolidation fetch rates. | +| `io.aiven.inkless.delete:type=CrossTierLogStartReporter` | `PartitionsReported` / `ReportErrors` / `PendingPartitions` | Cross-tier log start offset reporting to the control plane. | +| `io.aiven.inkless.cache:type=CrossTierLogStartCache` | `CacheHits` / `CacheMisses` / `CacheSize` | Cross-tier earliest-offset cache. | +| controller | `DisklessWithoutRemoteStorageCount` | Switched topics with remote storage off (invariant violation; surfaces `Failed` reconciler state). | + + + + +## Compatibility + +- **Produce / consume / replication**: standard Kafka client APIs; a consolidated topic +behaves like a tiered topic for clients. +- **ListOffsets**: `EARLIEST` returns the cross-tier earliest offset (remote + local); +`EARLIEST_LOCAL` returns the diskless WAL log start; `LATEST` works as usual. +- **OffsetsForLeaderEpoch**: supported for switched partitions via the diskless leader +epoch `E_d` mapping (epochs below `E_d` map to the seal; `E_d` and above map to the +diskless LEO). This enables follower divergence truncation. +- **DeleteRecords**: supported for hybrid (switched) partitions. +- **Transactions**: transactional offset commits are allowed for diskless sources. Abort +markers are preserved for the local portion of a consolidating partition; transactions +spanning the consolidation boundary into the diskless portion are not supported (a +warning is logged and those offsets have no abort markers). +- **Unclean leader election**: disabled on classic-to-diskless switch (KC-129). + + + +## Testing + +- **Unit**: `ConsolidationFetcherThreadTest`, `ConsolidationReconcilerTest`, +`DisklessLeaderEndPointTest`, `ConsolidatedDisklessLogPrunerTest`, +`ConsolidationQuotaManagerTest`, `CaffeineCrossTierLogStartCacheTest`, +`CrossTierLogStartReporterTest`, `FetchOffsetHandlerTest`, +`DisklessFetchOffsetRouterTest`, plus `InklessMetadataViewTest` for `E_d`. +- **Integration** (`core`): `InklessConsolidatedDisklessTopicsTest` (produce/consume, +cross-boundary reads, concurrent produce during consolidation, classic→diskless→consolidated), +`InklessConsolidatedDisklessReassignmentTest` (consolidation resumes on a new broker, +no loss), `InklessTopicTypeSwitcherClusterTest`. +- **System tests** (`tests/kafkatest/tests/inkless/`): +`consolidation_pipeline_test.py` (born-consolidated pipeline + WAL prune), +`consolidation_read_from_remote_after_prune_test.py` (read every record back after +wiping all local copies), `consolidation_switched_read_from_remote_after_prune_test.py` +(switched topic durability), `consolidation_dependency_outage_test.py` (object-store / +control-plane outage during produce), `consolidation_retention_across_tiers_test.py` +(cross-tier earliest offset after retention reclaim). + + + +## Related Documents + +- [Classic to Diskless Switch](CLASSIC_TO_DISKLESS_SWITCH.md): the classic→diskless +migration that produces a consolidating topic; sets `diskless.enable` and +`remote.storage.enable` atomically. +- [Architecture](ARCHITECTURE.md), [Features](FEATURES.md), [Glossary](GLOSSARY.md). + + + +## Design history + +This feature was originally proposed as a design doc with four implementation options. The +chosen option (a custom `LeaderEndPoint` plugged into the replica-fetcher machinery, +then called "Option D") is what is implemented above. The rejected alternatives (a continuous segment reader, a queue-based batch extractor, and a split-merge in-memory approach) are documented for historical interest in +`img/consolidation/design-image-08.png` through `img/consolidation/design-image-12.png`. \ No newline at end of file diff --git a/docs/inkless/README.md b/docs/inkless/README.md index eaf3b1f5452..9959240d0d6 100644 --- a/docs/inkless/README.md +++ b/docs/inkless/README.md @@ -34,6 +34,11 @@ See [Releases](RELEASES.md) for active versions and release history. - [Architecture](ARCHITECTURE.md) - Design and system architecture overview - [Features](FEATURES.md) - Currently supported features, API compatibility, and [managed replicas](FEATURES.md#managed-replicas) +### Feature Deep-Dives +- [Tiered Storage Consolidation](DISKLESS_CONSOLIDATION.md) - Consolidating diskless WAL segments into tiered Kafka log segments +- [Classic to Diskless Switch](CLASSIC_TO_DISKLESS_SWITCH.md) - Migrating classic topics to diskless (and consolidated) topics +- [CREATE_TOPIC interceptors](CREATE-TOPICS-INTERCEPTORS.md) - Intercepting topic creation (e.g. forced diskless/classic) + ### Operations & Configuration - [Performance](PERFORMANCE.md) - Performance tuning guide for producers and consumers - [Configs](configs.rst) - Complete configuration reference (auto-generated) diff --git a/docs/inkless/img/consolidation/log-continuity-1.png b/docs/inkless/img/consolidation/log-continuity-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4744d453c5d7c2ec80e817edffec5ece6a5427 GIT binary patch literal 96357 zcmeFZWmuH^+6RiQgc#H!m%3CsmIBf$OHn{-C}~9Ll+LjR6a|(+2vQ>8&Z%1F!Z_qti9KA@Ao~|b-tZ1uOIfcSHbiAF>FMa`m@Z%X zLx+xTpE@1guJ?O)!{2eJVQZkHyG3{Tk8`>{W)tgsVj??xq$jYq?$CSf3e-BN{nYT~ zPOd19^2cBN!yYW;|M5VQlTYmr;ru@>9^ee`bNWy4NU(KCF9vHLJ9@3A`_83<-J4a^ zsh+t>|9*e##XOr}fl*)XZc7VuhyHT);O9kH|Lo1t&28|j|L@QLA1jb#dX>Cse)pM< zszB=h_@BwNYa<~tr+;j&C2k)6AOCdgznDz9Hgb|_n|6h;_^y9He_`NuOwr+(?f?4g zTVCfaGQ759{{4?zHTJ4^YFMBHxb>%Z-)(&FKJ|Z}fwOW)#P#HE3;g>Z+n(H+W`FXZ zpFVl7T6c11+Q0vCQv89KjQDDnfB$vi;s5*PTWj%u%Z`?zbzi?n`xVRD`v=`ku*;v! ziP^%*4crFy3G8{RO+ZUZb=z6EP2k zlJ4xOLw_GOkMm7DF@m{Qqtn!xZ7Z@Nz)6NQ%*bR=#s*I{`Wo}EFZDLwtilg>Ed0#Naar28yEPhe zlPtTLI9bX(#&q_6t2MHIeuMb^!_#)PQ_))&r_kl^Lw`$ypGjS$m~_)lty6Jrx+bsB zxt#U{NrRwP3B?TV-`8D9NDp#rHdGPe?ch0B@=l>C-80gpAZ1Nkrb*+{A z{=TlV$s_yKFAQKe0}XwLBN;4TU^nIx?S$MPqx*Mu^~B#7_s2b>qvEW3y*I{JD7l(_ zF%P#cY_Ig+H~s9%4xQV0HL;4q1NAaXB=>g0#Vaq)NSFjI50k$?)!e^_+x6_3>FOOd zzu3Gucrk*PCr$nN6N2>kT#FL((-T)RGIJ|e1ik%9Je1pec=wLRdz+p4{--iAIfOTM zeX5*VCM4&ar|3rdl5bUW)h3>GzuZJ#-aybQZYW$%^bxnr@BWNMev?Jr#A$L(jhX)> zs}vj)ao2Cv6IC-U*p>D~qOnUwRibxhcj|){U3?pqjmY{CA;BI&6=x)@A(qtc6Qxw||D` z=K4~IXV=wqaTQ*YaC@j8jnpqv#tfUgE)+b%aDoQKbWZBfv z21aybZxpOo<-q&3=9*WX$Kv5Y93u34^-X_P;Y(HKlC*A&5$29;zKWL`2$&OhCY5-E zzThxYYmn4!QCxMDy`aJPxUSoCc{p0^kw|VGo3ZfP5_Z!&M%?neEGpmbmwq~hMY{uMrN-Gs1Ad%2>K(YtlKKTW6PM z(Cky=(((A#C-+rQe^B8&9<~QZc^#!c;@gaeR941$NUy z@sS@X5u$Mmn+x?^F88=x-b!R<=9FcKTYt&3^ek?O{r!fj>;u_+HSC#nd z2COAwH++5IClGhBn;h`!b1Duc=bUOjb1a?{_Tt3P1riEhsLDIoGku(E<8ZWj0%4>! zWu{F+;w_7^&cbpFcH{8M0>yxXeTN=;+tkq8uZ*2bk2|%%2JW#Ojx-Q`B+w}aj{^OsZB>d8vMW!JQ_j!adqIXT>G+QPYJxpXJiilwjq$=J<}(tL?OB;7|E3nek;7USqr8oTFI zEcOy(4C5T%T<$eGutRTbJ+r0PAvc~9W{I~~z94bB=-VBJk$RW6Gxc`H@iP0=(W$^m zpyJq02<7$pc3T{-<8VE-bTq+^3m#DK=eA&HVSjrU+g@~G^jIT|R(o24*mg5=Xnj$5 zt$TM5^L}&ex~E^yi(?V;ze`&~#o5mnM6>MG&u!rK&vNZADZm_$+>U{g;LxitZrApT zSmHYxFa367g<|J$j*%rY;$e&4@uB)KA(LagcHJy+aJ?+U+0A^8IDKloY%$)TwBeSc z6trGznx5g=YnMJ;?+q0RDvk7CPx|w|+gW6k+9&vqd>~3N@wBrAu1*#w8|0dm=8q=$ zJNI_I=G&MKDV5QXpQ$Z8juC*1U1F~uz&%!SMY{jAQzk#JN_6=8cxG-J!S(%-knetj z&gu(13kHe%4xeDj@%-vLn(FjCZFkzBsEOTXL5pG>LDF`x_5rTHmRhyBQOE?RQ1HJh zf=FTOc`_8!l>`9p>@u&@Ppc>a|TNJpL4Z|vp9){#Gc!VSo@LF=bvK)g5{fRy)UA%S)Hmv?_4BO<&^HfU zC`>hbDE#J<^91x9cnrZ^X^->|HDMH=-Qu|0SS@%MgmSBPD_dx zL5=?ICrxs#DNGfFbMEb&5V+WL(h1s268(Sn{DrahlX8C9v7zP4{hr;X@U&PtW)Uj(C|9*u@z3zaKuS-Bhdv|iIs&{p-&rn#q z8a$KMuAdtGv)yS?aP13I?In^55w-vn!W%gMxlo~?Nve;)7fJWo8B4AHL9X-4!}HC9eJ9oZ#GFhMTI|RCIEA#K9S#$mi^qLIC&&X0F(AAT4-llxZ=tW*bV?>Wn*b^ zH;WsFmZ5V#rr`BCV~kwi?P`xw$85*U#MBlRmu3hw90e*fy?O9w%mfvX7pmELe(Usj zFV()^;lYD)#CShQ+qNcIrv&b#*RrQ-13hvi=MYp-Vfx`Ea7tH+t*jyKgLyvY(ebd{RTbFZPNtllldr zti1C%Hs9Yrwo^;Fwl_m1g16LH6xvv!2)cEIKIb?JkGRFzURd$7LO)kY5!RSq=km#$ zbE1{BK|8gP9-BmwdtQJH;|Y?2)R!HAhstDUY7fKK8Shs|y{R-|C0xSs{cG(M`fk73 z4=39R>X;oERH|~MsrMx}c!{VTn3`ZFp?QT3+K`>`T?E5OG{7F|BA&6F zF@9sI(e&#fd_g|FT}eW@Z-18#s$3pnFb`V3(YsrO3fzSL*u_WhJNsO!;t3MbYwJ_k zmI^7cO4_wvox{0GbgkO|RRDQzzCTjxTkbLTWKvZ31FFC052Oo}@1KNsDa}_CDblUz zw*Pb+kH@43Z?5ESeq5+CO&|9c#sj>S^qB0Gl-}4_ozmSINwY{EXN^~I=l0kkGL%%v->3pn8)bo0^u z;QxoK$7`wWN*g@rJ3LpvGEvadMreE{fFZtoC>l#K^&#VG6qZO&0XNWTkjVTM%{X?m z7($mFJn9c9%YyT;)dX^!OXX!_cV53A$*mRsOQaHxGq#r)ucgYlqyB1V+zc&Irv#gs z^+uIotfo9Tv<|H^ic5Ox?Od=;g6|0@ocBZx+*^*0syw-^X-~qZ+}?_te5KK zNqsxl?8u%myHR4?CXoK(2~XW=KmcW5Ba}AIkl+Si)jC;mk&#`}*I*-TvD<&DHTSZ`i& z5$Y5Rnt8bUu2XB5s#wHz3x-%M zoe#y>^&!TXaqQ=UC&! zLouOH<5OH)&+WOPayV^Bs1pDi55m$Ou@@EK_atj3D&m%}b+X3@K2TX&|F%bo|52u{ zTQ?pd)%fir^#61D>3W}Wya;WeIYIxj{8oM2vijCG%k_nBW;mGP4Q28KNCJVPoy-A*NnEsp6VeMIio! zAc7d5^J{QWmx+55k!EinCfW6RJl~_XT9+j02+Uc~q&S}w+98{DhCX8fVxu_U@l1pc z)nA;+pSN}}orJ|4>!3T!_1oV!g)RwWJ6YWbT*J7;%vYphzRmL8E_UIyK>Rh^5l|}B z(?w__aV|tSR{9*~89Aoq){z^5_@Ma|KFN|4ZN?!-;HfybR3qDD-1&jZz#93vModYz z?#z$Udar_U+uL}+yQk*?Vz@Txh!DP9vwUzoiXVPF6u#$8pJOKh&* zL4_!-0x|g3;<>*|Fx}bo*4W$6v1>zoI0sKkmk2k&buyeP=BFn$b13W3E{M=@*n(&^ zd~Ef#LsQp&O*^uO*T=%rgd~GXH}g8j-` z$(xAUlmPIod3E{e_{yNfotYNkJ(h&K+Oi`{Rhxl5Sr>QTigh2Z#ajoFE6xzU2 z-<|3)F<3kh#DxGs9sqEb6|2{RyklSfe5$EfDlQt_y$ImL6M+@XQL+1Gx(zkvQX4Id(`alu~la>DK`W++_QL zZ-LtRoM$;YJafvn5{}yUm7s-8b4kv@P?hQIvhj>kw=Du1)vmoABeAy#fGb-L>s_1F zKXn7)4!mtmRf{H-FiCy+)hYAv4toaSyt6qoiU(tah!3ra1M~4r2_T7WPAz=m0yl@u+0he zm_G@uwMkdXcC@{Je5{=y?4$Sf@LdZgo&f_<>RCNSDPB#$?E}zQWmPT46a1+HCZokw z>rTK~k)$ae)EFaSXMCdH)DaXVWbXT&Fzq3zPZv}Dl;f*HAXcV)6f;l zDY=%SvJtuZ?Jo2A2wsJo?t9g@on8HhbE3Nq#RW8zgt#j6svyh7i5@%S6pb_FdnEZ8 z+FOqVJ^ic4y9?kwhn-#2UreRNIn!e|R|hCa1F`GlE(ZaWzQtRGS-l@Pe(AE6&-lRR zhBuIRP=Iq?&5;T->_;Ho{6v}z;q|knF4|83Ix3ZccAOOWj~D<|uJEFTHFUw!@4At4?92az$l08Z))Q6 z4vanQwv;|!xiRU2{j|WyA^xkke?Y($R_`joL}kD}y?g%VlXP_P=N)!h`z?$|#%)3g z&@|4N1(}VNN`dR614^(He}w{5N8z)p1=cqjmcu~f<%SMw8Exvd&mp@=ANKq>{gOa- zIB(2KomkN0IPB9aQkRW0eg~vS3|xoZF@fLB1P3XBG})rG8PLPn`5@PFnH!9&R>gmC z54zK`;)j)m$JSCVhN<>t%(khCv5s)cc{%n^GApgQk{9>z1>`vfk9dQR5S+NVHj2|S z#Gvjc^~K^YX$?dZ^In}Ikm*iK8~DOsS4sZRL8&*T1=wN~3>T?rZzaSb)+Uj4{3qVbf?je$*L z?^Pael6FbO+WX3p*_j5u5LDW7^fEZcf06fb{o;^YK|~mO^1L4X1z`IsxDEITV%Xci z^Be*Ec0xFD6I2@5z2BXB3yFah(AO!>pzo|Q6l0+r+&HB>%C|{Vao!Jj)0Xc)x_$P+ zn5)2`+~>^Uf9=%tasb7Uhi!?n~YX=cXKYQ%4TfA2Vo5B8|9 z?tn7%JPr%%gbvOWcC*~od??3iOBf^ZR-K3)pZz4((sbm1Ek0aMh1$*=1M5_8_^lcW z3mqi+ySte__Ct}LZv`0{G@Po_>459frvscy$iZYNm8!-|>6N#&&nqj{aYk{};so zALk7~NMZp%sDa;tXctdh=azCb>}4bL+GoN_Xh|M_aq3#_eG&~`QQmtM+=|%pK%fKf z`@hCGz;z4a|NyaV1t4lWO_;Z{>qhYk`rs&piSnk1%xt6@8N}q#W?LRxl z**z!3CB65m>#10TcIgXL0O0;*(^j63w zeREZa3rZP)&D0;U4mlr2!n=_n>H{YQ@i7L=Gz1r~{W%7<;9f9lS{9m>HrFh{Tj|lb zG<-rc;RVl_!NycG^v$?kxQ`9+q;;ik!y^|hGGsE^DA-RT#Vjk=?mN?_$z(8^8ol-i zEl<}l7ko2jEK9ZO0z2}})rW|^wide#5KB0|$by(uuzJvZX?3bf2^jh=Tq46D)n*vW z_Mf=A^>(VuBYO3s@YCXmU)Y?xHIg;|BWv*zEI=0k?h=ZYp9xR`!0cCF3v5VNWb1-A za7ubh4M5%_m=zhwJ+}f{hVNboZ1LHqgWYBy5K+Ma9A}@=Pp$Mh@JNE1s zo;Se2k-AC)Q@LG$!m5m6!np|Qk*W4_*9`2t1~liZ9DP~~Qv*u!fWCTYz^YSR z{j-iooBUp?)4-q(f{r&ix@zqPC=Q`2r|NksGg$9>BDiL`l(!;CwO)YQWL>Tixw*bY zCzyW5%6~l|;Gpnomh9}J9jCPA>BXpREZ)AV4SE^0^&ybmKZSpG$l!>T0X0&&B|(8< zF3JF~+?$l;K~clb`^osn$5f+-yX5Yyd2R6XAvo1f> zY2RCD*W>2Xz~gQ51-v36;BEGxxwwJr<(K=xt{}s&QVr3)(e~;x8GsLy3b)%IU#>sB zLNs#7j^rVG0r9uq+>A#a`KxA(ra~mo<{~H>ijO!Xj>?12Z>JU_<p z`47(fqk3oB$o|`S5U92_n#xTUVyLUrTh1gMoztIxlZm7qaecS(-DdtGjC_jn42(`7 z|05-*2RoEFq^;&sv7j$|J-n`{8G!gvq=b;O3YtHLo5dPa65Wwg9sZ!a`k5eah@R+% z4E5$A?}IWBv8aLc1Xs{%-#{>kdrEIXr78U?GXuCT7$K5A+z57K6#J$dL1Z#8$1BFW z(&$FsAcj}T9KjT6nl^qKV%if#oY$+z(~*=0aEeRRiDOg=+g!z3fZ)P zx|D)gdr)`Dw|4B`%OFyyW!bC)`h9|K7jW;}M^`An^|;!(CAKp_pKTr*&rq%d(Xs>E9v0lhVNcp1S2kkoNBA*U z;(Z3e#ru=<&<MvnLJ3B*X!T zl&$m)Y(x=SRgwDSR8vv2U+$isfvIF8v@jfBAxHw`iNo}6=Y|mO>_7Pqy@G9=5o~wO zCFH1BUcu{{mU}UM5-w2x0ZoHU(5aJl$?WMry8D*CiCZ0!R&W3Q&m&t#{JJT?Jy5pY znW)uz=1tHRdg5lnO5q$R7d!XUgD8Tov18%qi(8_IZ7c$AOMxEXiSOTPXi|@aYMhNDCvzY?X_yk5XVO5=+i>1BmByhMO=Av?>IJ z1(4O#12Kd^1^>my^-`cNAE(p+GQ80;k`G2vlP&471mIN-fX^4ZUVUt+>xHt~KIUE@ z!DsHHsMakHmR)8={8?cA$2=K3qyK2lyqiSqZiWj{E4 zawOx}t{mBwAxK-%^+tCYVYwhcz*a9%rO!xx3l+r9p&6WYyibPLnRrD zXdyDz0YNyNlDHQcF3^cAi2eAh#`Nlu86XamfeBvjqtx;Yx5vLky13(L-pT~%LO4pT z)#6~>Y$P(tEg`SN|42aZEi;|2SmjCNgtJv9MhOO)M{J6EOnt3zHO517>lx2edb&cs zEr35>J9v^|FrD#Z;^u5D_!LB79(-N!Fs)VCO=5aQTc`?6Z*E^+39F;5mot_}Dm{FI z25)z3F}0{`09_A~=U`lc+fuT9ZL2Qh$g_w6193@wz5ww{km591S=;3W})5h$rX0 zpNGO{EvJLzg`PWlvV_wccbOI6hpBnapVd~u2EdD)U2Wr}xS&WvRtQ2fz$2OgY7@DU zhTO|03OvR{6LrjQ8j^#e+>u?iMt}-muzK6tUjn}%ASiPN1Q0ea`f_k8z*oXt@5+5COD@4+~WpQ=kU{yT2%O$`?+rh~AS0puFSH8S#%{QV5 z;A#kRdz`XuK~X`G0(=P$#5rm#VbtTl9z2Bm<|Qhp+sRqvCOa{O@_ke5)AUYv_vFXbGI)UJ#RgmV`L<)EEuU6zxOxY3V^cw!s?e}= z;u*JVmi?*tBk}x9JK?0-KNKPC)l^u}E$9G((*9}q)onZiCw6LgLD(oD(FQgai|y11 zs{y_(06gLex;GwQVEfR7Aeo`6?I{RXKP?ni?ZqFVlW6wj6F4iG}vf|>aeL<}8& zLK&O$=}NfbuYN*2zc&oJ2iCC~+-uj66L|q?z#cEM`_QryG!OR{U%-v+Q70a%tVFgv zcVJ;&#Eq<7d#TY=DX@Yu!gBV*vQ zdEGPn0F3W>c?AfKn*-lY+~1Zo>kHgnkTrxzCqx*^ zHMn9pQ56mstnvzEW#3yL#ucrh9a)m(-g6@ww{6F6mJyLouw8g_0ON@xIH=C32Y|gQ z=VBOVWTR0W0LLO%zOO;6lZDxrul*1Xj#Txm|HbCJv!=39SSQK`ahZ!MYDzdFO2}HT zmjP0Nl7CS8mAEJkz0b0gtfyS&ev?BEG9Uo8W*X#@Cf(HLMgmarp=-jYb`PL-M_QZl zsf4&0925wtF^HB}P#2$S$O?F`0_lUdHUcC6Q&T&rm8fO(wk6qb$9xj23P@4tq@k=@ zoXS>~)(wg}#p5;}Igi{B^(uAHH$Iu*b1g=}-%IvJ1zc+G-ORiu2))4j6x6*!{J*rS z>c`86ZFq;9Tk=C7n8fK$O&O)zF8~nMBOHiYG{B&w2o0jb?E(y-9}jk4Dbw@EZ!PjI zLKeIO6<{Z^w*gShQ-aNSqD_f8_C7G2v`2-D|U&2_C{YEX%B&mIbu+#tP}Ox>-KfV0M3ZO{xFBE+%+AwS1uXRP;En8i&bmjq}zzB~{qA8;Qz z%mfovECh2Q9Mom(5>I)6O*lM5$%j{jS%F*iV7ugCcBQpxhS!BY6qHDse}63E`<>G> z_se`d`XP2;#NiHVWOS2J4>*K|9PFc^iBBH(J!?3iA+Jx3u?qhX{#|H_0;yDL3(7Z^ zUr%L_${zts)RjgK34y*Y%A-?Ia*2)4B@1OKT_;PJ{KggyF=^_T)Au5%LO(Rv{RxyT zJ|vNJvqv;P#D+7N3S}4SST=&-xC*4cty(uVH_lMPgx$Nm44PN$@C-t3h4EgIr>OQ$6Y?&Jo*#vRZ|^_z?UpN8+#$@0v|oA5o`Tu?(zU|Aa{uc5*i){< zAmF22#9`Sj{y9Q9Xp_Z9_EvVkka9ZXqTQ~LN z=>6k=*L+Vn3{aip%QZ|+-|xd291BiEP>n>R*%hk}=7Y$cvB*(XLZ_>kqbrhcad;A3 zQJh1k!TRbFGl=AxUVKQLag5H8kvw_(CDc%*?g4@+Fy(mxlQIh~MCzL*-tRu@oel z=A=tRc6~Ftww?`Ox=pg!(7??124sLhV@VfB;xFCVA%OYa0^2bN7p)Bjf>{FKLKZ3c z?r*^zvop3do~GeTz)w(uWX=qKX{Ww%wrhNpVcvtm1w@P|_$%jQ!#dA1h&A^xV7%HI-&Te6OZ^fw1X4z0s zSrSqVe>#eL)wfbg4v23t@#6I_Gk$s2a*zV*m|7qG?R1|kQw#~fB92m6d*@0iKzi$k zyknw9o%$qV0OD1UqfkxHvDMgq0S=+Xneo>tyYUZ&B{ zFHsj?-9D{G^2|s!t^BkVREbX++2yJ-hnZu8YGS)d0f1+!<1+= zv{eRmg-o#yIet*3-Mb%9&bc{>O+IuGLH-jBF4VZ64dfCbef-=NesD;Ff!QN>wTDV8Piu9+WowV;~CLvcp=3rb!4z;E6Pt_2=Y z2r5|xboAk?mEDALFSwIvLO?daVjNp_>E{18XsIUrrSU<@pR9aVCKIm{pSSj0`MSXtdTXeNguG4Cyj;uk2ITll99#(zLKug<_SH z;4cNm&AqsRFK_e@lUw|W>DfEebY|Llkc3<}S-=kc0M&DkOKDwaKcn%lAn@W_KHo9K z!_~9rU(>ssy~PZYWKt$dLG|F7C3ckSK4bmhc#^Ov8<(y2^*zP z3Ta&{n`ZJFrxSFv#{zNo4qz1T2hrSG*0U4vY&Htuv5kc3jSVEz6kB0sOkMIa^HXfL z(HWtXGdg5o>wj$GV>d&oWrE&u2xMz%m2QDo|Fzrx8jM_0!qS?Mw~d5YKf*Aiz;I7c zE1=KIFtOAn8LzQimL(*ICeGfkdjAS5hWaU;2iw?+vAbU2Z9G43GDMB`+&GfzVUlVD z>sSz9JKBMy#=vS(g|8y|Ypwm@r~ZO8%Epd=5F z^+ZT5v&dIG1M&Gc{X@rY3&a}#YbBb)szIzwA)*l!AH~sEgG*01?qpBh?ORv|U+zu& zxwd6hsPB=LOHcJx_N&(|$(_)6VQ4V3yo0WHH?TcVT6G5q7X6M&Z+Sr|EA{Py;SSOy zLf+Ixj;`m2-HfMaePO&v^2Wz!Y|CUR-iOhOEik@h*ckU|(!(bm-Unf8!{gIgo4w!CiZ0=&L3q9u33LDWrU5%|kJ4FFf2JaF9B9>X+iVy2NkCya$!`>1Xj_q+tj=1j_b@qIK>O5 z%+NF<%98EBZGBu^FTRUWz3%KVI1Z*hyzQ~rjpYLDNtkO&yazF=jhE{a=u2C3IK8P!DUd~<)7*Y(JljCjK>A`4cA-J)rkh3ghBkA4h?rhss zt;<;^kn5wP!r0QaRM~`B1aNF_DG00+zvwuD0;)H4I+B-<)BDIg;1T+`PqbQC>a)?*I{0kb-@0qm?q5? zGcohx2XdhSAeGv2wQ9gH0&UxkP{?mBK#nXw&x}{7GVy?Sio?g%!!v(8h72BF+#m}j z`!Y(qpu&<$z&SkT^q~|$HssCWvb7WT3k7OkMy4b<6X?L|vJ^XuR9%Fcg1@#m?eFZn zNeeX6*m4DZj8Z&Xje;AcdsYSxu4l8%D44SD>#m8FQ48xYKX;t{{MT4Yu5ytj{s*>7 z`+J6mi8I%Pnnjju@G5D=H~-=Qx6#i3-AAF^7hLX8^;1P;Ah;8lqs0488W?(EcFiHQ9cr*0 z@i3X7bX6-TOhzVHbR)@BQ6&pRl;6AO07|e2(fIztyCABXrOWKVpy@Wtjg)X%K_`bd zG=}p_)PDE5{UAj+eL5|vRS0`O;wKHsn8MU^NWCHZ{q;JNn6eFX$R#4uAaG}P=uU(-I9*|LCwWW-l3sIwTIO1Az^M(20DHIl6hNo z2bkb52p+cZb6dT(SmMsKU?#4p@{3t0zvtxem!6~KGySdb_$kQ3nwUfT$xw_E+jxQo z1R=0trIaUK2j*hIslHF65jGwzW9c%gqE&0N#Ptnuw-N|9VmbK{io02XSOsVWs#VYa z8fh=oM6Anl^7!tfXvnru@?_Ker>bGpz`}9A~>`cpOZ@Y~LNiBc6!VjrWl_An0 zV7?Jtja0G_<92G=8X9~T3^at6plNdyE}&C1y4e>j>|sO|XZ~a`2NNdp@)^oo;^I@b zCZ5L2|qmC=V$>;@$#;1YTu7 zSH1m`_UTICA}C5GE||)T7awtGm*{78?N^ta-vS-Bv0+lZuk$tzbw8ql-#HCxY%rS4 zp**Bu(X1zdAwa%TjOTFo`mONefnrILJ1|J~jDb9iX&tk8^h0bA8h2#&1x!V@1U-uh zWjSh4cplj~CQ~nHU>ei_xQoW!0`F|&KECSZY(RVH?}&DgegMj^%jLCVG}FJ zVS8@w)_t-&jZ>~(?BC)mE^r0(g3!H|{+nUR=@z$f#y&w^{2zeHCCL&2#g4MoH;Ji~@b6H?geT5lqrHnJU~ zwDLLPrjlcmT~mz2G4FU_2ZG-5hBJHGR?aINXI7ZkBEK%>c#YRw!(HD>@=`!o6FTb1En=f9jP*AYQ=%a#^ogF0Ez>B?9x_AAQI&5?b}W^Q5S5oqOe{RcImO zpsl91V%CnQ9yw*x+<3>*t`+cFa+YGz?zGsIf9(rx_as=VI)-xsouC{gPHu0@HZCSQ zrG{GWN*a0&wxCD9!tOIECDs9u++lUrbbv@SGg4iDcNn@>Jq(`UdoNejQQ=Pe%_1fNnqW0^`S|=zid{5j?tWJAo98!inD~PRrbYZt!Vu60Lxe7##AAiYIO6%@fwJWj`E*bfQ`1d+&#=Gh%o{WU?&0;J{YuAK5%2yK6)v&>a?V{ggcs4f^tV-#=nT&unXnQZX405`vbvvGI ziLPhc13@^(#h=f>qbQX>hVw^EuaSj4@!md5;8LOiVi~!E{tQ=^>8MV{{ZTw(vCSCs zN#M(tfS*M;V`SIo+ZnnchK6Y;SRYh+8*e5=?bX#8v#kyu2hQ#?yQ+^uf-31~y3CI& z6UuVcWtF=6_(SbWF`Qem?7p!qMN|(_ura57XWC2JhexX0UhC9l>jFsWcl`VtWJ6E} zK-TF3{0-A1uP|4(noManQ4M(=U=Nv{=@QeIzvv3(snPVLeR#DlhK~>R zuq*7|PNlFW1=2C?3(#{|daCrqiom08!=>n@Zb8z2L^Qp_5_8 zZ@WYOO$Ro#{E7QcURT25O;g?gyVR6cm!vooopPF_Yi5_k zPd%VN>3%h1V|}$dQ1vKvB=Re-kh6Q-PwPY+y53DndbL z<;_kd95|Re2c^M=k3YPj5skgPUr0R{2VEgm&a7_r>J>U$4PDs{u^_{;->B1&ut`-l zPbpE>Tb^`t+62sxU!6Os!u^;M!S_~dDnf7L%b@=+#*X1)-S8)7b-^c;WHFB%nc;C*HE}7J-C*qc<{qfJD0WUWr#zsZCXt=*KBZ3 zt=*13lr5=kta@L<^N3`&>D?#cht&RNb%3GFvZ)(i?nRc(MtOPX644i!Cqcr6{Fq1uZ z^k(-G0n{_roPA9u%x&Jl6w)|cCxXG=U3mgV|@eN z2D;a28aR9o>&?NhzmpT!Cu~xALWpV~QHPc9b%Gits&JCKfZa>l{^a-JnK8C(p@3iw zpS76=wIzgjhw{Vs-AL71dyt4U`r4FI+OApGSC%g4lkuJ#i5p{ygOBe(L?Tn1@8h+= z$s9@K!=QO<3ehb{VSND$)9R`X(@YSQDF=c*^!W~?uqs`z7?MZNE3BLCB41eUT88>0 z#k-Ae6szUsu7J*$p?Y?xR_gAVgUw+cim|cFa_64o|p34iO`ca-#9&ZQ|_*5405aK z=aS!dnS)#DMec>8D$D!9JDL*$y_Qt?hD3OSAFJ0ePDG#CSOi(}-;ekTj;w1|FM!#D5ev3xDuB`ghMdoDN_B(Ed@EX(RG3N*ZSeDK zyL>XTvRH#P4dLjv3QZVc@X1O!FCY*!0<+&N5yQL7#gTN#KB5xN{TyX^XAF(SD&}<- zfnzc|q5x9NI%;Oqu3!(i1#^0UWYE%Yon^Q; zYR(riFZeY_lAC?+)?&_Q!;{{oW)&g}F=w;4yOJ&9d-?vN=6k02^AGHQMIU%+Tk66S zI{<55En9+_q9%Ai^r4uxQ#IkHFtcYl4&Xm%tl$yMpbW^}S{Oc+xU5e83bVDI@@?tQ zPuWB%T4^>Y3I4rmot7wGOlFRNC;)a5&CT*U2sz@ozMiqG*nnWyL-_a_{JAAHNbInI zNbm%};HmfHLX-#wOtSo`1Dk6tnW<0$`y{fY$vOh;NLAVkJcil>BnT?O^u-1?V@K^0XJpN(>25vr*?~c# z?)%XYRg;*Nh)r6A&np9%-}NQ0c;WC`Wp?pB7I&Ej9|!HLOYBioVS-BaPuMK!UagIlzQYs zLg9D0!TZN{za896ocC~iNo1kxh$iZK(qr!ax<=mI@tM!4hVLcZ)ZPHDFUZ?TWH_EN zy@v$uvZPX_Smj972Bqqy97+z+(J4H5_^bOHan|q_uKOD-X@lTxgYD+?${aFjS|yt4 z^cYR~nLo&tmbj`DcZUH62`RY1*9Sry%9t)#3eviYEA>`P6tdA+M;t^O7N_9eDo`J> zlAs8sI>;4;%Z|UMx&5@PyU%?QK?8sM>$eLW0-?P(Bkta2%$)52;mR2_TMs9}tOGB; z(4M$)ns-bOOOJs-Kh-@=364b-F;G@7hFQ4RGKcrNqTd70PhKb^}2{p|6Fg$OGtih z<9oYWK-Ay*yhnf>dLFtYW_N!}`$#=~fyMwbgZX`xl^c-A6(FTUnfbNS+tAYc)w?_h zY(7iy1ZTV6s(&!CkI~vPL(S)dB6kai*A8R&B9LlgaXSQQtH){HUd&#b&xQG9}CAbSAaa15Z&71GiD2q~=)mke5?K?C*- z)mpQw&^*b2L75KnS4%W#H)D7Mefo$1ERZeX6!dl*m>ayWQr`4{sGFI$qZ|50VjvKM zricqB*B@U{tuipBpj%Dut=iNo%*!bqi6yG1|FklHAfaypOvfhgh?S29l~4Fey`h%f zU^n&9UR2tgQ|bZC#bpj3Fn~Xd)g-eRdX@B|=B)gB&Y4S9kb`~cnyA5+hNjwy6*cr1 z(oh~?#`ZXjK0-gAaPEwgF^vgDarhocHP1OhE`~o)42>{ZdZCN>916+z#Ta)jLx zRj>l>V8-@bKRw2j*o;B_0}jqo)^wnkFQP!lqYPh)7l3wOOiG>mXJ@uvEw}@HAxi-= z&ON}b9&hGB)-Jc%xniL!AbN57?%MQSt6MB^R?r8)#2W9hYP{jNpC_ap5TU`IhWxCy zQ$$e=>LK#6-yvix*pG#&z<-sOcf#s8e>BO`Pl3eHBNe{|K&;V~=`LlAecSWBiqYu(dK)TasY!C6TQv?v%tOrR56%dS` z$$laajLP@21$cj-&^Ke=>PkS8b^?;*4^+x=d_f>yeC~mf?g9XfB4WxD5Z9jJ&^m_R z4(0dRz(XdQ1b7&`5D&V}Olcd&1CkhQ10}}5uNhV)p#uEd8QLury6V}^Agom~1v?N8 ziB+c=+Yc6S7T~H99r=$l)xyz<3;dzXCrE+-@GrRMQ@~kqxgo3{?RIQM3v>A3GRU`G zv81OP2f!)|RT}7(gxv+=tg6@0M{Xtxp#UABfPe1 z2h$F?Qmq)uRP!Tb>6wW-RBXWK7s49K>TvkH8df?j=6_Bz&k}sN>N?8gFG6lKZ@Q+d zqiDWO&4%4Pz^w|)PZ~C;TG1N|smabXwG^Bn9BlE--a7q3`{ZIhvSC7|?wFQ?o25N8 zj22`WhUXwW6y)gqnjV9kmY`=w6i5E(;G3E*qQC=rH=oOM;PBs`VKf93;1eZJ+qz*| zAt>6i=CK=mZO(qRWe(ZoJutSyYu?rcTXqN3yO-isfJ$tTd?K$u3l-r8x?(1BV6FQI zdjk%S4q_%!LtwaY1q~#RO~tVqnB;fIb63rTxv-4D6Af?M^yi@C;Qr~wS;HTVw|w>| z8{#7ZC#;sK9O#QFeestDS%WMT50LjX&nOV-hwtFnj9%-;l!2nCR$%G?3Pa#cJLXR~2#-x(^fJ`VjRi91Aw5~uq&7+d1Fp#^OVwl2{y0PGFYJkBtW=cp)HYty&sMkMMGn2tKnEN zIO0#IUZac?yEW*C8xxu4>-KnI_6>zE-TMurO>SNulR;U2FDObc@-*=y*S(5mL_9h`XexF+4daEU7JK*kU(?)Ii{p!v8;Ciab?Lor`L4T;A zX&5K(kc>CyKW7y8Kkofyf~b2y)nUelNr)wCV}@^2q7UZj-yjd554cwW7!!ok>|Kx{ z{$+sh>x7XcRH!yjQ=zpAj&Q|^?E9qdQ+HsDzOdnqks(Tu1ni>||6>caZdF&=qZ7|Q zw=+-I{6Flyd0dU_|1Q4F$rPD~Xd5C_N}^eYPzq&eE~zMl2F(%Kgfh2EgQ=26C27_o ziBuXDl?J7vL6+wFUGEheo6qNbzUTEl=e&OB?Ecs>;a`#IT)bV#t)W*#+pYN}bp!%f+bQ7DJTfg8PYSZY=frqe;LlAiK1jB;1nq z%C+Y6{b{(fs-a7>V)T<9O1!5Nb7~<`=KA#I(%@un zl9Ut-jWm0Lz+<|{B;uq7H0+1mjZNrVSoKAj=E(K6Jk{Q4;1+n*la^hfHfn~&C&$j- z;2&+}>TJx1$h$P5flg{3*(PGoCEAR4ev-Uxc|2Q5uXD>6ka*@M?@J*EjH@q83J9WT z_+R%vJAS@LTwC&<&|0cr()l zoaBP-(KCDAD;6Wp_Gyy5_e?Nkmw#t|&?h|tAr#{b9$Ki z04nc3CJ+*$`pFY=bf1*5w0E@2SEo6QK507d&g;is@5OQ zz9%&`GIj#DT1#KyYdFk1+O=_@=>_jCDB>Oxx@llT1f6P>;ZSO;+vl3S6cFLPg`pZP zAIS{@)b%Fn$}Dv`S5fs>S)JqoEtqq%NKy9F`MrpWo`qvweL!W+-TZPjvT|7}ay_4= zZHjl_JR9W!HIQP;DUuov-^Yp1v|+3)mqFWhFWFMkbz5m0O?c`fwnbDJBSz#o4 z=I9DaLknkv?Hd@s;vV*j%}hzKZ{Uo+ARcg4n1FtOjsP?wi~iv!z{%?;$N_ zLfN?II;YD}th%q*OtJ$~NX$o52H5sG2|;A0qzoFpe3ll%Nu^dwl{!UitFVZ1awcSG zg*Q%&o6T%Uf;~7OgJG{yrQ=d#N zON(M^zOeF;s%1UbuUjYY=AXNvrjAUV?h+OR0_w*zq!zk%@X_f1^0{uPPT?kh$ zeZ@@TH40xFV3Ww*g!+=Ys*fF9@d0`Q zC(}E}>$3JHDb9~$uTDnzy$J~kgr70XakMK9P~1VK?}*pxZ8eZ&e!A9ux<mwc<7CBzPE8)+08*^n>K zQ4)J&;yPj5NyYe#B0OV#|CUaXLXf0%{Ry!X5`R5skE-Z_Y;!aVoTI7Vr)Occ@WB(L z*p_BE!vZqOLT4* z#4P+sqoA1F6WU_PujyP#0#UuiM(cXc7dRf45hRe2+{cp@8GA*?`-f3A81_mn~+FcCw!C5)RY{kbu|nlkTpan3}4ac;M3PRb^(cMc6+F4j)$V0YyerlvNe0tyst$YT1<`5FG3Aj)Jn| zXPSU_%koG#?O*(w4y)GkN7k$+L+SG1g1ix@e;9v$-xP`c+6zP;^g9Y=c-C%aO1lOb zjyC0ln*;2%u8U0QGfxWJr0(XL9Rp0~5i-$O?0~OTzC&fc0D{y{#AqWUE~kbU~(iSY73H4SofVY&0Y= zjrBTnJ)^MLlRn$VZ(E+*1m{Oc8=k}KiN>-mr&Px$%TDIFwX|j9ZIeX`_CIfq9Q8&2 z7w@55K{^yU{FJ5B!kaqnc7Qr)Q&HsKk!ix+N>mmHN3iG@`_FrRIM>aicSM3b{Fs#I z&v)stCYE0J8E<{VO)d{et2YhPj$vu+e?7Y$=F-d8u0FUJkJym7iPH5o<>jL5X=rnL2vDu z0<4Jh=;B)S&kbtg2ln=5PelinAv`RNT&;Jtu}dJJzR94BCv;5fl4 zti1bX(_qPe<0xpoa+29Sq1A@NKk) zd*<0FxA#?~u2|spr$t*_J%@Q}ng+9?72FH!DI@6EOI!kD$&G)VH7{CSgUK5hFL|82 zfl0Ywr_aMlarL9+HQuIbOSmtOXYWHFfx8DvQGVp{sP0AG$J08p1nPz0QToB?IJDg< zH0!bx+uU#QO$cOv?)h{PNt3WkcPdp^^rj7v7{u z$~W^I@V~*9<;{P*#d1fHCN-;w7~abCoVyM{ zyRX|5+rB3+FwL;E+6;Ffi&-kI$K*D@?s#o3gR21;88?)a01|YqrQP1LZhzz;Ut}3? zTlPi1IP6Tijm02u7bhun2vR-p$}0^VOES2xnbo5nH^~uxqH` zcnewWPVXF5dd7Rsm&GDGSHrbJi^oSyg3R-r2L7xv}==#pjbk%ti0k6g8 z-dli%cH1jguBi3l^_aL9nGn|wd{zRrbcX(DHRhfDe!|L*AIa?cxJ zL>uldolpoPe}$vK(3aem^nud$db-_@X7-*dh4aZdlxF}@UCdl!xS_}@jLvhXT^=X? z(0dKzqLfWLBzd8|RK6Q4UbX)5g|GWQoa<%iL^i&JTWq5qD2ic=a3B%(A%(TBZ-R_VdKmGVMgGfr32h^UO zDJRSKeAJq2t&lu5BCX%L6=4e#dt!n0F(!A%W2LGTDScPS!ZWb3emqujqz&;IUAvB- z3k=%#XaXlsQIklpY>NLjtWYaJO}i8T>L=egj zuPm*7G!@ljfB%rumkv5+B=AGj(3!E5oWs~t3}WvjYhx1zm}wPZC-YIs=ONG6cjsDq zOO~fcu@8HV4+YMIhy0gZN~XBU3%pm|bH~b6qMLQU79~k%hY%M~65=iQ1#PoYyE~)* zRoU6V0spjUQR10NCQ^fRkm0dQ<}HvPwKdtgVC(jG0RinAJsM<25R=8G#qK4I!w#Xw z7MV^>k}6BlJMMr)k6n*hAZ4^fY7s|BWKRmjSdw#{Ket(~))gRayntF#sc+e_|Mo!N zx5$WO6AQolK|;G%QWzCi`(*YCbjvhM z+E(#2?&#!a4j5Ps(kz(B&i4F>Xh|b(N4pJ|Y@G zhc?(Vm^Au@qjq07Kt`9KLzzUIgN zL1wPniSy!wKYg{xs|!y!LI@o9l*KVfD0uo=K;IBW+4@aPH&Q4s{ugcm zvN_AkQ%yy_)fUkiMvRm4>&-^WaYOniS7KGzEG?#>J-!c(528rj3Hd_FiGlG{4dSF{ zY_=_b5>bGv)Yi^!R9)w1T6$A@hw~#Mfj6#VP~SvsS;4k5d@}Kd3CbHGAz|4^unoS2 zlRvQX>G*XJ2n#0+{t~{r0zlli;HoYW1+aa%Dze-f27z+!plh*er4e6Oo!{SYw{eq) zZ~8M5DI=t2E=DL6;FA5zX$ga{jOJKcQ{u8H}?5oY<=RUmq^} z;X-~u_I{N$co)0qjaj2MW`Y9e0-d6m(K4TN+Rw{OMR9`U3q1XnATjg-7_c*n7T=DT z1BrU75bx0}F)~BKE*o~{L3dkt%<(Tk_U|H*h-mS`9XCJL);BCq0oFa}vrmM>yM@Kn z7N~oE3Nn{VlaZj}{9Ieo|AMLz3S|+(V~ashy(C1Ox)ycco9f2Ox5$?9Y-%4bClCr$ zjR}SS_hGDd5!uV>P3bVG#O1z0Vzjec`=fhJ14ko(p!D4jlG@F}vbhqrvftsj7t(nh zPwCWl>Mlkr~jAs!5JNxjBskg5K_qScgYOAiMn}30S z3{poXoXXGh`_%c0R$GAm=NPI^^BqofLz!JGsaL$;sL}Pk`zJSLf@Q-(0{UfybhSWZ528kJzgw!I2lF#W}(euGM<_AX)qe!(H1<~e#D$E@ODl+;4@ z@KbrpUBmPmMSenF6azH!Nhf)Wt67k$zh4h1&6(6c!eLSvoB)Bi#C})^l2gOJm!~j4 z@~gfVcxb*xU8hI*W{en1kN;H9w;7zR@nu8IoAXRQaAvKbeH) z1_(vRHN#D}bNlm> z3`mE%^j~Tm)<(Vurc)ldYgC4&%G06F`Q-mUfB$w`dHad~Q_seUOc{0b25-WFI|s9Y zX&uVLN#n{((mI$A(9bQ-0eWXZegtF=iFCbjeW(QeZ`Rz8Jts1u)|Oo>sPN-|M7dJ zS_i^Hg7kyrj;ffiRB7O_r>+IVTeTR2^yLvtPUtl1ZnA=BWTk#ktbCB%N|hoR3N5bH zbzXI)YZHF?+c-iaV&7_R-yWGKlv8JZF3(PwGhBGN58tf({xOS(@-ECsBHyqG^z<%Q z*<6W9lko5jun0L0-yL7?K|?=H)E2nH@!pTbokG;o@xw&^Ir8)32l;a|X*~M-=jaXE zz3ls_U+}MDPxSfv&GYzX@ekh|HtLJk0oHUHUX3wgq?#>%#Yp+nm%cJj9nOi9m{;+H z-jvn+`h*s*^pl1N^xsf-7H&B2hZ`Ck`|F0bM{z^1?>F2!$k%CvO8-M9(nCsrf5x>a)@EeO@W{jEQy`SouF<=?)y3B$NerH!u(u0Y+n+@&AsBJYKXEc;<14IRI| zfFpi%w;x`Pcwv#&0ZxIE@t(ex{KMBQWd8bEGJS3R4}&bq`|E30@io8iUn^j=e4CH= zazAg)I|C|X-}XORj`QE5>{Zyc{fp$tQ3~09cxh8_G<=)Kkv_PY?hiMc#h*_rnURYb zu3zS-tlIF;g}!Dv{%@M2hhSODKKwAh zAU_9a?}o_QqE=2 zwHM#-cKL|@vu~eR@`PD<7IOJzG>HBIZyo5e;OqD4N}3Wb3y#>T{%|9%z#ne0r<4nA z0Azj`=K}ldV}7Je1EhJ^8IsyM`uWS{58A5<9ImpfX7{MBy09x zGkRw*jU2>ge|_$2t+?6OSri=5Km8c=!1vPs!R42uQq4s@*|z2rG$}*jMKe zkt+(?=W`($e9Chm)o7}8I9&33o>i#yw^ePYthCt)UhjXab7y`W`7s<&)Pctz=$6zr?I)g7ORdmh8Kksrg_Qcy&k< z%NG#*h{s9^q|^}O1X`yGaVd9E@hW$vBFtq09{Cp|=UcZ>uVX`f`AY*-uqa^TB-CehqPWq+~%=ddg^#(YU$c?;S$~oxXCkxr`>}Y-!$rX zFTiWC+A+m$i|NX#`Jlvi*sR}hQ@`L zBb=M<(CJTr`1FZOTP^k~icCn>BRus-*%BaHE~3YZ0L8)(L`axJ&4&+RGtB`b>eQG9 zwdu;PP3GoPhk(S-R!H`m0}%Q^%7 z8sGF0;=+NlU67o-5Z`t+E&^JU1ITS)_|j78_e|7>V`W|wixFgUU(azFA@oXy2CAw5d9jHD_1YzZ8e$#=(!Z+ntpiN}FRk4fmrt zLwl5Xh3pj6TcfBQSk~BVz!)x~O$Yz><@xnp4$$!OGPL*R*~Gr3<3E!zA3j%(?N9Cw zH$ze_#3h&n!GkSA!53<|aDr$86JM(IFSm<|4p)Z+D6O5H)^xA{f`$ zIRay_SMBtPsl!v%6O&^}HR1wcV!a~TmVqMgF0A$Xq zHT=?e{o(iwSE@C)-y1apor%4wu6p@HciSss)M_Zn1_v33tH}}kDhllijgrg64ccz4 z^;qjODK#Ixi7ryx<7gq}_K`&JiKx&#d4iSn((`D1_UWN&A3M7l@(sVUeJ0-9Q}fZN zShQ$VGyo?8Bowk(1oqtX0$%Kr74X5#q{P$A9_?3!M!K0p{rs zAeA^U)WyR*sbT^0AZd1%-?qV>7~$UFHQ>Fd@iqEzn*&HY0q|OVj0#@ z1BYF}I+vR1p~Gv5%v~ZxyVDVH0bH#@-xVDAe|L>UN}XSOZ4z*Gfx0OW__|1_jnX~` zjLJBiS0SL&uzpq83X7UK1Ws0K07#^`8UiR9WZo?!MtJzygUG|-@=fGPD_Ra?5nr@S z^jup9=&SK^S`Q{Qcnohd=>gK}({r`-`wgvw7-5Jlezp92bO)>Phn||LI?>u79%iX3 zU_pzs>ha+oi*Zi3RR)M3goZ*x@R-xY`_#1LEo9F*zM|qmXRAZ??3wHN(BHvkPb^R0 z@$~GpCM%ewGoIEXq}WLE&E(yAizjU9Cjb}!MqI)6NJ$nq}p5NcjqoeJ@PTla=El=2vRZc4!S+Vieir^`v zj9b&=2YgIRl=pIGy?11n$}7j)!UmK4mhaR=4*}DPb$YDP8wlxA|BA;<21dLk*L!V( zl55i*J(kHEba@j^Ke5M1gbhTUlvQJ7wEC;9cc$=vo&t5gsoZUQ90)5sUw0b~|Gl|L!EXmnKCxxs@_H_@bE)dDtW40$DmbR%pheGJ zESVtpauT(gD=srcts+Iq`yfoZvAZuYfQg}s{GpoQ({4$3Zn7^w?K#(?HtU7-6LT~j zJ?Y7QPq@UyY>_bTKvvs9XfbZ^O(=dC_#8*xMO)_}Uu(_8(AVR|<{4}bJ?^MxKNa|jYOh3oJ zYHDL={(L3?c$ZB*PMJM1k!|(L2b9JAtmo%CGrca&`ssw%Oq|1;a6AsAqDrGA^iT~G zt=+v!N>pt%s=*-po|TkE;%#t>=lg0PHW;Efiq_%Y3uaXcVn8qG+h4 z`+<#OwK_c;_kJ|j_I8C?}s;34Gbj}Vk70pul2ZX_5`SKrern% zm(zszOjgzbu(~Dc1nG`u-X%+z7^+J2iyCS2Crn=uP0`K~UAfjJm7O8o3JYI&X4IH$LpEFO<7L{*D0HOVdy!@Y@G3v^ui59NTO(kZs8^_wMxTP^T(%nB-en^ zk>yj1cc!X?GrVv^5})Bimk*= z8n`P0omjJ*S+mDK%AWnMISW(&nyef{&!Ty(Z&gf?19hLjm}k>(~I(sbM1kw_H7Pb<8e@ZVPlu{Q(lPJwctEHigd)U zMmX3vHJ{q8$88I#xmw=37b{k~N|_Wo82>}qR0Vn$>ol0RRVbg_nz_f~$}2CL-- zsb(jpM5?Lt;q1e96()P45AMI#PHf{1)cGTGg`GD#80CZ2nW`09+GcxBg2}Df^KXX& z)mxvqLTV#IDAeZTzK3?MaR~;UNz&>KFtq-0#$`m#j*n;sQ_Hxl3bt3hO~sp-%$!Lg zFrHVN1iEctmRJW{;y`7NvC-Hlbu3sYBJtCPL+Ir(2Ogq*6iJw5740Tb%l4)FQnHWz zk*e;w&C!XW|Ms^&fvJfI+qtjesyC7Rbqhr?ED8_dw7J>4G2xy^K`HiDxCP<9o_CI~ zyw=`x{|_ej6&%L-wj9~D^=eR&_Q|)sqJ1dCW_>IUgn|)ro(Cd)An%j`jXcpMnms;X ztp^*vcJv!R@2N}BGMUGkdS^6Bxp>_j=QciisD4*9ig<_zWA$7G%d#T-;Kt16zEN1Qedzu_1kDTvm=~ zxXP#$kpcHXjh^f|+97i2VdiIK?IZ@vZ z*5zX*Q@6otsVY(*FG*U1>Cn?zc08Tw`Zl0s=4Bkni(L@jksPf*0oXcB#sX-U3oEf8xG-*?f=#jIN6slD-)5Y4|VNs z$-TrQ;;MKut*GBM5?^yH_^q0MC;TN6ocL0{#L-olfZ>ZZgXNa3R+ObHdkYYEO53;N{eOBr&fn0$Dz|_0RN7SH+L)c^{<5_hl-C<`vEEq18aV*ZdMN zIpoOQuQZxM;sjA>wQGecv8nwFJuK8<1?TJa1p#4{+MN}S5=IeRdsDQn)D657hEl%v^Yk+ zMw;It4p?q8so_?``7_C4W$srtV6|02aw}NMV%zlLuEP_?yZX8kBc-J653V8-{k@p& zP$O2_z-pUUmKJ|@YX^Y>~v&Q%ZAsWQnO zR72osU6^?~+$K$A?0=1d^AfoNT_Uf(0IAeF&bsJ$x&y*|yO>$Cox;pOubY_`v~kZG zkqK|$qGk+}Z9bYA$2y)K7zWX|m{T*a7mD*M59i;iN1Bo)wv|;0#t7ZRhpaoeiMIv; z!$#5)&M&Gr4By7(@peSQhP0waZ=Ne?YZGXoUnuU6Wq6U)3uLXHz)wx3%+!i`%I&=; z{2#%e@FyX@+ex)VWkB4i*QPJk*s2d3nWQW5CgrZRgA?Og%y0MDix3>1QXeRRn5mr- zF}xy&L}=SBr(k2dz%m5gzq-XCIoTNDcBqU{m_I+)RuAy)w*`tXXEXpFw?^iIi@HZ%EoUgHQdYk3MObWWm+R4ewy z2JsBz5Uve+CbD8^!(_a=Yj}}}n=$DX`@oKjdAbj(kQrd#RIVzi2YYZGwMnfeB~VH( z=Q|nmUm8(<8qq=cm#48HNX)i{azfQAsVtx#xJZ2o?mypZ&PlNB{LMl_jR|$WUsH`# z$NJr7!tYVf`z23|1V1?NTuPGnHkoV%E8Y8NHoZ=*n`JOJ< zC00`~B_+GJsF8!*775c;t#g=n#sqxQp2oQLfm5XX zv5+xzZIO@~J8y5|B>|?}s^IVejN4Oxy;9zMeeS&N%L`CF4cc_as{ytBwf)siB)GrL z+@PSBbSbr*d}WaWt@#BY4&c@(rBY=QAL6_Yk;qOrZ`R`qb@NnpvFqwLEe0~wU8yF^ z$$WmD?1vBQ%{+rU>)d>hX?<~Gi_Rd%rmer;FGB9R8WXjHrR;3#R%yJ^-0<)M#JL$dirI%3;M^mj#In-aU4tu&6wvXf$#ZcMq5>0>I8leLNa>pFYm2se5nyP ztIFzgC@K6GHjcN%t8!##E;2>6*ltHSGIe3G(uh&^k{!+v(e# z2grAEpgcd_mXQP03gd{wkM|tUxCh7zW7f?7!6l^#m*TpZanI{N`7}=N|Ly_&$Cpeb z{E6PHf$~@XduQN39)L7n?0+_?|6KCZ|J(xIx({x<9H)LR&M9r5v8_g+vax3`r)spG z->Fxm30XeI&(|;bf(+<9cIy}mNIRrGXDX7&M}Bq<63DiRw|L~7nTKh!c5qHQg1c?9 zbqO}*&9q#WI)0??&wFPm)k%b@R9Gd zO6w}rvj?jc%wyK=by+Yu@#ou&Jk+{||HuJBI7<6myt3voT~Z0WaE^1nk-d31YkSIb z^&YMu@_l~)5&0pRlhPRM**@cxxBC8eESm<%d=%X(w{>*TzZ{7AV~5Q=IeF?!=qj%h zM;lWgY#+$+W^7OXbeV|R8>vApX{cl%Cfd@)w)qYhh>f$Torfgj_CsJ8&mryAC=l8O zuI`WD(~neuzyl|{z)8U`JR)uf8#O=3ycXnz5R6Xs5>S2Kv=jMVaw3=(y0KPL-8 zsCv-H!*!aF>0Bp^8rNJ38TYaJoS*XlIR{m06%u}FkJR=5`Gj*cl5TU_$OkKv@Eb2 zU+LK_^9Ge#(OR>m7|ePnNO4Nc7%-|(U(ms0RpNcbekS2FRomkz(I1+&)%Fbnq!@W2 zS@WVrh&^NcyO5RE)apYKb<5;xa;6qv&EQ?Xr5!F zm@6RdDOMEXkGz7c1`3X%dQILuFQ{Ws%N{Y3wcdsB`q}hyacUB?uQKBB3ldw^J-n2A zNfxEKSA?6fR95ld(Aa(5RW!nCqs?b+y#$R>_x0=1jYcO5sVn2~VsXl$aY_Y%7C@9H z!uO^y|CJFQ?9(1iW+d>SjUIWy5$uV|8~tTvGz?rPh}I70ZLESU*a8hKQ!!llWFX1I zwck@e{__L5c}1k^?PxO@YPftZ^Ui(ip<*OWRinv2kAniDGK1H$eVT10l)~+JC+zG+ zxHd0CR#lS%Pu^9MD6-IgwW9twugbb!EGB_y;}>^)t4Npa5TqH3SXXR%sCQEPz0%Q= z@2_QcQVJsj=?W&0WHI(SHfQwPYe~ZE{;|ytnWR4yA8kA;P`@6CuJu=T>^z06^tthT zYLlIWbUbu?&`d}anzq%^{ylq*9Z%k2&7NV;`{#TEg~a<%3z&!fq5J7ixo&>Vv>QOVoK)EL#vlfzla-p<~IZ6&2XT%~2`}p~mp-LhX6mFBY zjzt)cpVgWzG952HoH)q4;HqWCyDr*j#PZyxJaaJHAU%?kzb;w4T772w!(pOL!kHv$ zCLBTO8MOw5-E7EcWo`7q^`6LU3AD;SGHl!lP-RAFL$=I}VIxTjIPun(o?yLJtl$;8xi_0{-*4|> zPqY|yMc`z@Y8s2eH=J#}zLsCj=JC#xE%ik@z*V(G@y$5!aDZ2n;?0J^2bt_N zVW%ay0Oi!JJ^&OmR`~kB%5wA0R{IGI`OAM{(AD!DUh18UHGMXjvvOvnDsyeCG&?@y z&rUNSq=GH>a_aZWkE0-Bn$I`vRVWhQQdSPHWCX2Ik=`F$^mKW+F4}Z9Rx`F3io5SHY0(VIABwMk!08>zV!Qjz}fUK8lA`^DT zcUloRAW!P7Yr5EpO)xk&J8yF^pt76@6RVstL7ay(r~OM}HnW3M#P37r$P18;6VNRT zg2D|-uFdUx^bng|K!^g8aLKNS+&)HRK1YB><(tE)tWPLUN*3CQJ!d<4US;f1-{# ztvljGj>#}3AsnrS@5#O!Ywhe--hk@uB~60w1?i6Qk4RxPZfDoNU%<43YLjS_KqksR z7a@HaasRYtw3N!`jX$l%+lvqoee_k~xGRP3`kdsmZy&7TNzbLIkL}M$EFvlAE_USW zP2G0W^G9APjy5UctCfJLO*Ja|9B^wjuYdb$j)5;zlg0=;v(eWnzatiCGMn{kfS@I1 z+K)<*wi+&X3~e6fvpWfX7caI{pnGIPHofFC&_rwXt2aU6B}ONU)wsLjFpw^ zpYgh~O@`Ww#2~kPE31z{ow~XA$c3;9?`&^GkA`+m006+&3XAY+MvvBl3b>hFE-gF*s4%Nz^a$$RP}^mYS5up zjn^A-P`g`$WjM8q>Qoz$b3$6*xhN8+&0L5g>(|J9UJ5YQ?T?$pDaT^@x1&*T;po6; zJXZ1x(^7_N${2Nu)A@*5BkP*kA)x9vUD#~Hav|9wO?yX(9vNAGs+>`J+;_C!w!QG%JGNHhR(L0Qgd4U?wieF#{9TUorUTXrP7F6RG^ zQ}x>83TIZSj}b@?~Q(en`IqN=EcoW()E(`^*o3j~IpYb{n*XNt41A_Ky_P$`<($(TLjNHKXOaoAXzE8me{| zonhvZVtf>8vnFLGHrlfbIE0yRiHal7+>V_WP3OzeW4AfIoH8;6wX6c#=l}<*_&VdO zXFZo1LB~qjS3vs9qWger1r$z43BTonF6kX-0I%p1iq1tbq!nhyzs-|ZReFh4FYL4U z45cA`ZNs{P>+H1kW*_5cO2Tb~Ve%035i?N%iV3yyT{Y5dR`wpky@}hp#KDhWXyuN& zHFam=AQYy4MJS9FHadq${m1t|Jn;6N_OfiLV|7Jm^zW3EjLr11%v~Sc3LQok2YzLg zL_lJ(CJU(Bw?y?9$%hZv>Rjp5+8m4jZKr1@j%wczOP9#T!ddf*@-^h`SMZ6g4Uvum-8G_R;_RMHwVa7BknN2c3A6cQx zr%%aT!etqpQhU``u)75G53QT}HE6xGku=qIS5B^n0<99MAm&>syc*9JQ*<@5L8W{C zeV#j?zpP7H7?CL2>P1#K5s<5v-2MDzrv@>B(FgW$ttvHSN?bJev8I7y7!VD!EcP-1 zH2p*N)@u~ZhgR0gLG*VQa+Rt&0w2aL14Jr6en)%RKDcOJZLeM*JZpW5yViyz$O6PG z4mz9o*&0Uy7jNu7B5(dzJVX4y#xtDZ{+kWN9`J7WYcjj@*-QaRiL)+V+mv4wEU+dd zK_PKOsGzAbO=djpe#C0u)Olqirc!=7CWf1Cd zh0tIv>M;7z@wk5%9S_~WqipPPU>z^@tM7{g!ro`LJA;^t^QimWVxH5kI>Cf`Fm?*8 zaOy;Hc${$1z`yxb2c@?JEI)2~C#Br}s$j1sEeEM%UXcx(x*sHVYM?ux>1MU|lom6c zR;(yV-g)BVZron(5bO{CJu!WTE9>)@9r3{J&yAK<=F%exTFsnjbY(H-8#QTXFa?mU zJ5ogWr<3YyrIJylwoYh|2Sw%qb60;8o9S;Uv@CI))_BTBhe_(-Eqj8wC}sVZYpZ@m z-%apTQ`=g#cY1^91UxL#ikNR6@I%i+&5g-kR|B}=rdoWHXCr%J`BLx5=zMgg9qTV> z1jK|_`dzj-Rmcw^N+@vmN5lFWwg~NL%Yf8L%C0(Bk|E`3QYax-@$!tppAp8ck&T4w z{J>Y3cf2%I7jXTOa5c8xm{c`YmLZ=6};MtZZ|p9N(JlOW!)uc#G{zIsS}m0hI_mo;qmmehuPAK^M4W+WAc8UZ1eHsn6~MxqCaf<-E+zwOg=c2&C7kc`NMrU8w(vaa zp7QCGs>6*hT(O+Y99$Ny(|hd3xp+0V$2K`O*=NAd^6N(UM1Q48FHcaM zQ#p2MNN3lZq%x*H_uF!7oT|7m+C4>7&dnM3>uhdv_D@K+pT`{79!r=WwtXd74!{5C z+p_)c`rMNjQSMHF_$F-*5Gq$CWq))n0fg1Nv*&=9(UmEKN|(byyNDEB97`93GpOh*h_ z?z;f^X$ig_@HgY;RN~HY&v>37nnZjM!cN4_az6D-0e{OjRo`qbLl%x5&ajB7ja7O=XH z)X}HTtQEOT1w)4XU96Ce_*Wi%YVuiqK`H_=j_kym^Txjd=~E(r#?X)$j5MqSar{e} zKBd3ZCD;K&Vle(0_&+oLUs)=9M2rB`VAheGg1*S#RuM|I%f1$9sQ<3rT5}j^! zGf}xe_QMLt%4HnU_;H8OZ}ba)++p+^rudITq~93-xKZdA|6GP+1pb+uzbtbp4m(Qy53~;C698eT`0; zhxc$N?H_joomUKfO`IY^e?KG`B8y!X%<}wU!*Pxj26JNS_;X4>9zcs7Wts<#z;(9# zbe#=@hNq6dwDA9)Kbj$-^@a1Gfn|KMl^^J)Ix(=AB6zHz^^lqar!sA>U|UX`GlkP7urLlL`j=wxY}(O=K3d%;E)vDkK`yM`gaF zM%h(M+K&vAo~1JoG`wGSpG&XZ5H(VSV1w@;(}YYoUjec(+WSD!^L>6UAhyYGhXwLn zfrnrJf!oI+wHHEtH`%Xrz*fFP6|i_@t0c|h*Kkc1*g`EP3&09}8Nbi5DDyeU@<7 zzjOaU1uLsgtS~b*p5^wr7ya@}BowY|0GOVRji8Rb>e4$8bOV$V?#48MX|s)}jCHwt33PUc23bJeVv`zln(ojvn_`=VQ~R&_ z(k7?F0yb{Xhl~~!U{X8w5G3j1m()3W%x1;|3KW8_U2!GIiigA|zFS;C5Go`wbqkQ@ z)PW3xQQfEWJ|G_zpeVE5@$I0Qw|lGPdT$a>{SE=J3be{Q3srW1re54h8Jp%M_01yW z$CI|5U=1mIj$ABMSCnMpu>Vmf5N#UNv@}?@^QDKiONh;)bi*!a-Gn$HWfAmT(Hd=* zw*vBDYSo-N?6A{=nc3IHvZbTru`P201|^`hHqE0C?=7IEZLGQ<>VE|U{xL}M2T)g7+AG`J23$_5DVQ`(Z;G&e-k?6$luo8@$7?0+#=B)* zFnIf<8ylVbx+EIy&(-E3SzX?tO?1SpqUE}Zv0wt#qk*+!ZBjlM?5}P24s1o#`*(LH zr~H;nFxSn(9foHM%f^~~9(SFTTB3LJVeW*nwr=+L3ct_+lE4@;pB3a#tX`ec3p+X><2;PV> zi8#glLpIPr*{;t3MqDwW`(G9zSKs`EkMK&h*;TT$$0_y6`r7ogXQ(<|_|PdVZ1?iCW^A3r*iCE; z08b9^hKMFWu4hR8dw`C%2jM zfOcfwOPrH!Up?a62I;Cbb=IS94puvut7fNnP=mGn?p*N=A`>d|s4q;tQ(J;wgHw$+ z5Gh*wtVw~q!dD0=q#H+G8Al(vhJ~4 zGR4P^crtv=qm$XTNRjXUSYY-?R7Y7`a#5U)c4b&^D_4AH-2~+|+N~!f60gTNr*xnP z%A4Yatmn(E7WH&F@earpNqtQgL51r|qgc`7B7VNv#~z>D!!sdOeeiaIKAM#~@p|+v zKNaSA5YMtxBjSNo@~Qb^D)EEte!Dp591A|_otq?qY?Y-(x=5lLkx}uFF!j^;pS)Ap}r@zYEC~^NL&^e zd-fD>$~HYm_6k)QH}Qk(W8$zJH#_uom7AAtmp)O`<>&DlMqG_r4TgCbojb)?tfD`4 zwRV;A1&^*1IyqpviImp^WMOSrpuM{AJ@5ieWbC>1@S+O2OeY7wap)l=uMTKiaJMeh|x02bgIp(sacSqsmcRO*9Vj-1)xu@Y|%tg5|WmozZ^ zf%?vC?=QWo^DCe$HdpP*>yIBwJ9wHNtLd?UHQ~r<6WhIrrf~ za(C~BRS1)12di!+RUfG!!x@%2D`kZLoaFhip|^ajWHK`I4L-}hz(2cZQJ2hhH#dE2 zCW4W%~lIN)D%4uUd z5>(?)oyxPV8P}2zcyRfHjgPsh@nHNt!yJ9VQT{vq*r6s{se^U=J^rLp?Ns&Ei|Xcn zAO)Fv!v1;+9U_lV*d}#^=FHbbuou#qBNJ>K9usp?`i~?3AA9c|kM;ilk86@jB#A-@ zh0Ks04V6`y*)j?tE_;>{vMQbI(LgrYJ39v{J1!h9S(oU_C7a*lc{R>C@Avt9Z@+Q- zjoa;a{_Gsrb-l*(`FK9Yec-F~t6M%QyKRzq_IRsqX`0xEPh)I{kakl?>`h=TZ*-LH zG4vzp-N8?+&*>=XCGhhZ_bN(}kM4goh-WtsY0{FV2}Y*4S*t-ov`H(MeAC~0#- zizA)udmSP1vl>iE=!J|pG%!`y@5U77m`}OasE8>b&}=iqJ1g020#Cn6M1z&ATiiFY zkYSyE*+oXBZd&7O+fCMyWJDGNFdLB9R`)BC-9fGOYRsKf{dAn z4SnQ%EFR}`?Z2|#seMn^-)!A5>!?xBQJiSlH?8KoQw_0C598VR(o}zoQS>`TbK7C~ z8v;s2I_}vI;zh^TD@L7=%u88;89eRUut1}--V1N`f2j396Psy&eh*_@5siO+Z%!n| z>9XF9X|3wZk;EsBwCggFm*x_ARMe-d5=%K%${zf|qjKrNn`2d~FD~}EU=-icV z&sdiPA_j8O!dV>P5lqW6Q{l+U!1QY_TI2FMRdb9iLBVh;uJ2T$L8NL3ZRrYwC`n+4 z5sw?ok*miEua}HE@FrdQ?+RJYJAx`@)HK0i(;&5f52I4@h=LxQ#Nn9?vAkgM0ys4ZwWX;x>q>MrBceE?x!)uK_mO+-oBSD5~-^%7ilBK zj-2zbF0(C$L0*a?XVvEEa}LEo`gP>9j`Yf$Zv)&4wzNP;FNRkogi$?HKi5dkB**3U z9(K>n#$7kl0w+2mo}<&>;kuz+S`!h&EEeol{hMyr9WU<(8M@+E4%Bzwt*T0+rS|iYARGw5G}oxQ5y|nAxX3eML%(4%ZbJl^QG_F#}kEz>p$&d&n|~LvNMZ5 z=+LWG(HGn8AT1u&U5qy{d_j$V!Big6PhOQdrNhc81G9r)0oD!r;5 zu`s6ECPXd@EI1JcUL8Ri5b8$LdmF&#P zBvSI)Nr%bQMM%${+$TVJlVi79Y7iR$Z@O&qdE<(krk-7cC0yEPk9KltJIY)CnBBov zqPS2732>NOd>MohI<~MVe(fMNhtYGdkU%3?-p6*F9DlM?4JN%_R-0~Y9gICk;gsW_ z@;qOF40NeP?4B!^wS&-5#E?E0pDXBL4C)L>+cjsCDnzIxVbApnKy6rns@858v#+b1 zDg1EZaG^}(EYk7ljCFoq=rFk3;EPYsqV2=$o(tWFS5b8mx_X(VJ>ZD_Mcf?uqec<5 zc!Fx>l54sEf*Qp)W%1s~5=^XbXCj?Q9m96HaSK&<9g{?4mtL6>b}EXIIG>gr`6&)x z=-Ow*ji#@m121VKT|!!18gWu8e2S{6+W^7%PZgPO+9}?^<0+BwLIf_J(oogg_zZwI zr-_0XfPjh)rgQ970?`sx8S%jzD!y=C%aug0MiS!D&6&yfobn)TUNfk8&rXBP#Kq!i zi;h)(6}z;zXxbcqRA5~S8MF3Wl15-7tHBb^D)YgPi<5}y0Jmxfw`M9~4<)xqK&U`cTObr=Aau7wY}L+PDWm5iiB(M^sDN>E4z6G1RXKW@J$9K>MPa4Q z)+@rMS7>UTzWB5wx5}qWvKyzTG6#yQ7P5L`?ApB7d%aJVB?8+jA0T_ljNUB9ZO6-G zbKrrygi%>OhH^z_D#lK^x`isGrYqNQ)dI8|y`CP*v99!~_M**kx0Bb%QB(nKgQJQ6 z(b`9Mxd1<(U%2@F#5n|T-t!0cFD^VSu1MAaMwss6N2>%v$W3+dg?2B~P^dQImVW|+ zl467x*Yz%j9^A_TA_M~Hg}96KoFjgHk}74!ivc8UvUBhL#EEw3o=$ILSvoTzikye> z7?qpA;LAd?91a-?s1L$skKokwZF)3=0%4~|1ACePR8cP069*cMSt51}%|v&R-|K_q z3SDeoE@B{fIC~!RMM^k_-CJ)!yC_1jHxo6^a)yu7Mlydk)AUKxk>VPCeJ{tQfhRpc zhWIQiM=OV6e04X+Ka5D;4@22T5zn(4$K zg6d@-@%EVXGUXGIKmg^hpC=l(Ejv~NC|t`HLysO~ z=EqTU(L2sn!T~P2QPn#?3v8F$nGBJq`h!}esqjE*xHTh~0qV8c4mqwM%@f7PkU_MP zRjg6xR+)UzR0AS7YdyUZTd)0d@>f|KTIzLN_SItLoM)CNAmKM1KC(qnrj*44oHr}{ zgnY0%qy^0imGx#l9qU8iii(q4bl_ciL7`CeElkmDuvZTn6sUO3nF8Jeq8=M)C5hQ8bvJJl1?0v-OLl0+1nrXIT@jmc1HbCIYA z5s%Ay>x0Z93XbhiD-5K>eN7!)bcB{z4k^MUUpe)UMHE}q3iK?^ z`Lm9;9=OAuX7duCo~SVz<}YEd(R4ZFER)jBXf;Mvl)qT4t-oAk(TMBouC#4E&G+FO zY|eZgl*0}qVQYQO%E|NmmYE3rCBfP)fW+4<(Md!s)CXW#I`ZcZ6`8_)X5Hs{(GfbQ zqCKq~%)#L<_3Vu9t(F3g@8!rvdU%1%*o}Hoe6eaC(j83>)zsXco|DDdiO@qrspnx9 z@3=Q&A#gerEi8PSzjzCVY5(2nEAdT3Rd_ebxclcxrH&|+I{w6hX9id6^%9^>DPl8> z?@E#LO{11mSSdxDa89o(J@J$g^nLszD`(6?9ci9HaR+_ls!@}`s1)~bsQh^JHIa09 zs0gVSZK`6|Tsu3E%EbYt<<;|X2MAXdhiIZ-)_lm_fMG~+-py9TYvs#8bDf?t3hezn zz%z;1RHG9?F&!00S*uX+pY1U7^c6!R$Th_0m6d5bzwK->iH6c^GsIE zKwV`z3hAj!s?&O3Z&M>L^Ni%DI_Y++>|v+b^m|;fO(*0B@u)vLjW`pLMIfihku{;z znz>VrHI$Qmjp5Yeau}LO8kWxvC{XvckM2o9P2p6bh*m9 zg{&B^t91uWWcs)>{-qg^p(Pp_N5yJXvGg}RLQ zZlno7h~ZiQ9)Uz?Aq`DK^7v?df&p8uYj=i0_sWu6d?Rhg@f%f;BEtM2YaOBXomA{E z?WI*Z|K$rh2MV3BoIX!y+r`;p10&c%F84O|VzO!d(O9a-n#~7QoE^zbcFS2V*2*R+ zUa6m(E@=s9{6-3^ z<$A|z>yYz(*1-8(QWk^8Hixa)Yu(`}9(JQ@?6t_I^%?amKJ_ptsO4s36HA^}oHpHu zHkk4aNcf-F>uoL`MLFlzTdsr0RpBt3&^pgOelcWo6=>6WE3G$WI)j8e2S`v+C!5RF zHW7PL(5Y7_Qw4SlW7RI1UO?ou%nWZLLhUo4&0^?_vK?vu6O1`#cCJk>`uM6gpB=j; zB5&-7`KQykmnVv`>D+N4t=xx^jFhAJtUQQ;$OTrDA>4 zCq~oo-!nHp4{u~S$|5pknZqjpx1$*k=<2@jm*gBRS~_CV(URXyd-a^3IwnZ*@%il$ zL!z8)4^pK+TXb6)%*P;R=V!gwe0!a4z??QqMZK%#&*C&Dd<^GGXaLY=xW zE-{jNus!0`)|rGr8yKB%wJsB2pRp(wTL&5OZOtVX%`5Af&w~f_1zh{6drvzrr1xyv zZm#XKK@o&eyFR?V-$K3BTMw>EW#Om?$8EBku2$TC*`c;L9n|Dnky5eLz&|U+j|hF! z#{1m0t@K-uhD#s+$1!aqlM*VSXW|;|VQi7=ERqW8FZIY7w_#tExQ7Ugd~(qK(N&+c z_xNita;P}{EM*|KMtuoN5lzy(czq%kQ9&`5?~kg8e|jSRBCeDZhU2muc4cOD@Brwz z9wDj1tW{M&j4|tXmUH^i1M-f1B;L8pYFasW$AA zAM|D(4hK~^czeo~BYSOc4ca{X2uCLQ%7%(C2#>mU5lymEp^1=Kmk$llo_@Irm~*XH zd^q$3Y@YrT^&#gi4%xg^?CsZ=3L#87dp$&JQee=_2wEbneC!8PsghZ=s)OF*>S{K&`lEQM(R&OYC;CPLC35)^L0i;{$$dF|)4} z|L$ikuSQR$LP3#A`zaF&wQkfIQfb}Ks*F|js0@dy1?lOl@h-OT05U~~ zJ?5t!bKLb&vGR&Gs*OJWpQ=8x3y}uXpTYFrv26Q47QbW{7J+>AnlStUDH-T*MTqpj zA0jXWIFrT)$ub&iS+)v9Mh3TZXMxK>=w=ud#{KU8|LST3>g+O91B;sbyqD?@Z!%#4 z`~o=>6Yz#Y2V}+t!!JdWJp`W8e`bPYPi_Md+G5QaK_QqXpS98z{&Rfy*>1oG{@h`Z|`Nw)G&H~VE%52l0NlEcgIEJ5Pi#{cSIe%CccNBOkV(bG^6-7MQn zhWV!tzAu0UIjtbOa+S1J=7$?dFa`JF)uCyiWo1=Ctd+P*c@#`}{xie;7lHO)u%rL$ z0LlNK1Lyu9hNJ!;d)kV=Km7-z0XhDE0Ehci%`mD#1lT>=|ADIgE>_q&$_VrwP@nvh ze^H3!H`dt!yO~x3@SINBtx*wwX~g}DM*l@g`4^4;6OE3Z#Q$3?hNF&10Kt1ZXrO7f z13*ib%S-voz!2chUv_Qo9PuQ7c=p${ z4Jsf68z=qW64&7^A;G`CGkNpMi6|fYcc@)SAUYmpBK^SF<>8wzah~LV*~ypBB5*s0=iW)N?^pR7 zT*I+nKzz7{r*I95D~#`L*NVj8;iVJT&sP(wwjH|v=Z)q8GV}LGGMf{JNk6lvWt9qH z=$F6q#(35P6yZ16JvZ8a{D$UA)r~6j9Z&xJjvDkG4`mj~zhCN}-{CtR|K&TH(08zU z&hC@=ex2$oUN_#O@9_KcJ3hd7JoT8G_v#}(jyE0^b7Y*#zur}c_nQMsHIMl{hxSR5 zz9dR@Mdn5yd`VRJpI4}5Gc5RJ=7+pnghJi9TO`hjkfOKxm!qFuPtd@rGiB7XPCas z4xWX)t{oH0B~7HiLAS#B>nf*YZ=qX>kZEs{COwaf!(1WmaH-dR9Rk1IKj3ph`}NCq z!lh7jrFZRNjq_6d`TsXwq`>3iox*rr!xdL@rRuR%w{T@-pA7#t@EjK`9V-Wx` zUwdLo(S81TBNkWC<378BO|Tjzry}SgzYk|zyDV^7oWC)c^OIKPr$ghF^6OPNWm`8j zTsu-}gw68kFDrfDW4KkJm+hYo)HdHd@8OA>9SE%!-JnZs~J#_0Vb6O0zor%M0&sc`s|^%O?JyoyD;3ouxg z>t1&S->w6BaY-vibFDIpC2hta~tjbLzbV2Ffl6E}fH8CqGyS(%C)h+d{6&Kt%eZ z>g1xQ0%(lGW1;x_C)bjWP6X`0QKVQBbRN&=LF8XlesTX=A)pT7mXdD&<*&C|0@xb< zz>VRiz>X(>?pKJd-*X`7ARqd3x%{H3SU|p__iIP|pr=BRhB6I6<$vd)l95FK1hnzb zJ@`L=c_DFuWVRd<`?sI{MFT>*6J)r*e_O{H6o@Yy?jzBYO8#~QnWvxxlq>D%-G<1k z0yclU>hEVj_WwOU3FIzY(r;e<+i(7#ds1&Un}*`gG+(8Au<0#Nv8r# zCjURXLVhNvH)_RAF{c!{be7i{k#y4(^3legfUd z6)|8H1C-U3lw6eo_4p!*CRPRyJe?v1B#zA2d^F&r6V0(GBSO5 zdN0uj&kVxPXlz&egsy;W5=>W*B1dzwe=q&tr~dDP`FETC8)5zpj{hD>|DLA*<}m-J zU;k!~NT285eEt7Jr3Tsi1@m`t(aW1Kan>2%ga(rOXQYF*Ns&bTv%rFP27Sw;KWiM) zKaK8E|A^_Nf8N~!VvD2=PWmU=PKtj&{69Ug$t1+FXhx(W23475Q>oDKw+K_{YRl|4 z`OM|=i6QUwuRzxOw82Nm08Zh`2&*^-tQBP>u*$*W@kOq}AyE&htuNSuUZuU5{~?D_sOo^SyPuL71U%72|vo_GvvF>&21gYY2X&Gfq!%( z7^FW&&a&wgkT61aR?4z3aWO^ zOv6$L^Rje8_kZzQ9pF+9WR63s_^T!BL!c@g0Y(jC#hQl@Zo%W?JCIwA)&qTo{6@fv z(yC5HEiLRu<^0_m=#i0@b&~IP;r!w3uKrPqm_%_*@qF}k)O)!PjE6U?fK z)(ts^sNq1i2cRO~+X_s_qM|Fina;Uvrd>w9l>mD<212u~S*1uPn#F6$Sjw~LK(!O; zXb{le^`m*=@X*Noo2E1M$a*Tb2B>EOy!=TkTwAFla=lfJKiQC@`=7r=yh<(%7~dNt zuW7^8{@%v``jKD|ym8KiJQ_qgMM%~kSZIniBi;7872cVP7^DLU)I`14z`No?MyaoX zlEHzX&p^;lJqFT;sw9EBTp3rO$|Jk;mBmly+FtP@E+rA11yq9;EBe8j$K7U&MmfWUhgtvkK~av5S{ zVc|{S*AM|x5Xm$T7Bor>0`M(JoK{zi*_b|$`eMqk@A*GZ3gn8hRy;!T720F{x{E7ti)V&^ZPF{LzR^g7wsgXZ z84*B`Zt?hr6ccNVEBF(PnqiO!kZJJAqPI+mVdCRaF9b(rRhvLIqX!pufwd92<=QtT zv(Kp0vW4W*s;p^C)Mib%?LIzwJn16!2l{xg&CLn#4K5^pZr>gq1_mO$*KY)I*n200 zfhk0F-UVBEm;E+)dY0hY%X@{6MXes6)E088k>g(Gv zfd0S3-mv=p$%$q}_~Ae-yxFKbtL4=7M0Dbm;%eVrO^vg^{1s?n($O-WZYH63%5#vA z1%c%wZh7RO_Ggdz*x}YTy`{r%Ci$f_lHvuJUVM6|5DQXT7&&nC&3nGD& z87ftqAm5?)8f26w68N`Y8WHs$@w{YPerWU&_yBP(BQjMi%k%U*icJY|U>s4313wuE zO1`{0nEtooYy}+2%7fPvJGdvyLdQ4Fxa-!Z0~*47B^> zMfmFcViZ-VAg?Ip4D$xeK*NR4Tieg>lP+k|ee~_q3iUho1eObd>g}g-A!BfU zSZ>!aCQkvS+g!W7dkw=~yaIo7D`Oe~*Mpd7SrED)MI)TMsB|Q;%mw*`AbpKlaksK> zJ>NInUmkm!5$DXaw&ud*b`|SewA(SX< zlzalOn(_g$2G$xxX}7AUv#BX=WVA938vrH#Q40pUKi;cRe_)As+dTUQIowVp@c7-7 z-oaV}nyuX>9NP1CtUkB6{Px3D8Jc_b3C@7_ik6h)Q|haQ1HYNWp%RkXDIX7e%&Xoi zfC;OEoZ3NSCfb$ti8~w)@CzeP9Y*HPu1Uz>{djpTMt6srF;_W48JCu_9{a3pn7xnn zT}UGPOzlCoG$-VvWeR@i?M(DO>6-F>2j`CV+SqV=Y=%Qj!ze9zc>{WVG_8;npNZg+ zOX|~~A$R2dZg=AvmYc8Mr;#4WAZ&gN8JdhQ-DxQY@+^Boe=ZV19tXRdk2e!TQ$P8= z=N#H%G1HevD7fI#Eyd+$Bt2M_bG`3g`f}eFmQDAvWGzFVz>UeSRc~OBd`g&@d=Va& zTIdMA?Gs_u5T{2i_7Y}qAg)pbGEqu+Iu8oboM!{5+N41g7;Vp^Seq=@&tE(TFMlwy z#Fp5>Lt*A-TaylI#~^!-g8ME8N0j`@tbk|Q+$IUcB;on~6Kt)+}MIeU&SyCn~4t_#~fI)89VBydly4hTf!7xbnLP(C;*`y(5_OErB?U>@X` zL~LI4tQ|Rz^XmeI=UDgn5mDznkPJF0HdoN85}aB{H~c%e05}Dwo~n{*!+^thwaaDQ z5luq^9)Dt-oADe`i)(1p2xv0zq?-0C@_umAO3>6X_r68^&b|ve1{PP<1BR!vi*hzR&gv7&J^R)CGHKdYRy(-%P)jXkD9DG>X z&7qT0n#au(r5Qr=@`qMxck|bG_Lo5lipdei&hm+Rtu3|2-Pv9DT>i{QkK2LAOuiq@ ze|`0AQM+m`uN^UNdRC=l*FYz1g)GDgPxQ7Uai~)^6B=ERQbmZ%%rMiDw1tXWE;pg$ z3GOw^C+*HahSP(cH0#|#i?V(Ugp&)kVJ4o4VPe`tQ6ADzj%kp*ng!Mz{!U4k)`1`Q z?z1U4EvL*HrFUE7Yfnm=oCo&KS&JGk!%EY6h|s=Z^WoX z3vnb|TO}Pyn|~fjTt3ltRFb^;UM2CJD9y8|lmIh8VZ5LIwNXbzglLVU<{+Neo`Vpt zgy5RjO+cZTP~cS#o50?1u7+6&{5-2$GFe8`kT@KnzyJZPOM4lc_9J-jI05m3qML## zin*-}&I)KK4c2slmR9t2cOaXDq@FskHw9sPv3MqNd(*_NEkpJA0HbLj;P+qV}2H1t!I>T1U90?g#@Zh#3l zX&^V5q_SNY?O*ft+}-Nl^~ENXDA~(r_Qr*Z*@F#`+jN>TkH@LnSz%f(6(xj}#ae%= zJp}GVh;-VzV%(d$K~XN-kh1{5dTVnPkAb2)UY>ML)s{c+hS4hX(RFvwZU`dX4YMcl z0~Wv61QJM9qzur==W^aT&XUVu6*-n&2s!j5)2!RXnwS{3gR(M**3eg);ErT{w4?^(s)U*VF|6?7g-B|ikQo)e2Y zbz$sjxh)shT#j^geOg}}w#B})g#gtIY>!wEVEw7c0Q&YAawnJ-X)wtpR|6u1zWF+s z=49h0u+WiIcf+Nzmf8H}F#pM0duU7y6)NU+0-ucP z-qLVTF!&=rcQdv61#%e3`q8ZufC)Fz zQwBAFxis^}S+}(%#FHtIU+@CX3m2S9%6ydg7W5{8fE9JUI`wX{7!)M8%(KRqW`W7p z8n38oIN&5d)>(1?dzeM08^zy%=*XaIH3`ORNWY}Ca3J)HC-a7kALit1MKuo(RrZE$hzo&Rn5*H%;IMTrFgh6_8SuZ)n)D?g` z{HP44smwW56XJAbXAX3;K;X#DPzT+X?BAs~Anc1~U5Td_C5oJ*DCPu32Vso&kXo18 zvB2XmW*23(q5KfWCqe>3cv3rRgouyLnN9LX=o1yaogzyCvMpo_}Sg2cZ z7JEJSruclh-UWLst`)M6(g_Q(r$9w(q|%Tcyv#4d$u!dQjPOp?_%>*S5%x=S+k0vQ z=h41ht=k0|2B*eyVCCmQXm46gNdh=oT;xm+SA?Lpaw(1bac39)dS^qhOR+1+`z@7j ze^_v@8!&%wN_zn$e~j6-%FIv$Nj_cRrIFQ=0P`c@h#f=J#t4!O#%>M9^ZraKqs#45 z^Ge@##T?kh_WP^V^?kKjyJCA~!3JRTgnvQ5*(BtL2@6X=etPJ>2D%Bib)H2betrIr zxA?`G(_j@2t<1nhDV_vSiuWp(sN<0jwc|}w=%e+4B$@|mI+2t7OPkp zY$Cohd=7GdM#sT7TV9(&I|sNIAxi1p-h zSpkkUOfzyhL#)SU@H4|0zHpcU3IO4m|BrM%=GP8%WQ+O;lxbnSHz@N3r5>#Ko}G1E~LC*0Za)?ExuU5=YcnsbmGv-l~p(TrE4#SNRa)`Z2O>EsuU>$B2kMd2=v*E7^IXN?Pwk%TL}rGV724J;U`#}d zfR8n*!{6{3EP@N!gVeTbS^~dO(x{ZI>&|2R24E^08y}lxk6|v&C zi^h-eb*f%pBe4CbUm^9G-5FRRpA05oM;uYb7n5%Et_|0(&OY@{#0H+@oe?-_^N$TV>2nI$)({4?#suv&mrrXwJ3lSl@$r+A@RvaoL#tB1yy5}1v z1p9o`5R7~Ai057l`IoQ3Z|Pze)Hx%l!!0w+3?{;%L3%yBn^fRj0a4GNsXXL! zsiCNpaoA;p-N`#(<92VnS)Eg1iIp45FzArxcBQR(aT|LnGBsCNZ zEy-~Mk~x(1JZPBawPJ2pEsqllmW!ux}LF%wxJ+$MeDX5O9h7S^-(O?wbt9%s=E>GPxLc~E_8P;)DQ z65lke8o4`#_kOSMy#Fk#gN!&SK3tl|>|v3qF#FQ=I}&*_?aMWe#^DB)udz}E+NKqO zS>G{X^VY!B@q!0gwP9!5kov6|^IQub7hzUo3Jy>8FNlS_D8=f-Jqq<$n?JIdBJr+l zQWGHQ7hQ%8Hku}$W%H2^1>kg_G%Z8VLYgZ7)7%Dgq*7-BwUwpA;NV!oeD+~H{;+Wf~hc$=Q zAe1015b^*NPe)Gg};)ianbgGrT5VQ)mPm14>I zH7G)Ruu;w4w%eIoCHn&Nf>Wn}Zy7N-Tk-58QIZekKYJ2&@j@3?1m1vfq^A|y_P#4Ry zeHIh+)l27F&T#FiQ5Rg_n*uIcF%?Ur!Jz_^FC$bgAG~h*2rFUiH;`5dZB@dEIBXLm zpsxSkstd9syFY6mFsK6t^HXsr=rn|EZ7KVl6WbqVp;RW?bwqp)WQ$#N6p^UM>_S7i(f3{R{x8dhJ1Xsl zpMLxeaHVvyG3dK$2Ig31{CO7m3UWDc}sP@QLE5I9-OCx|RMO`LPPVC%o97?z(r$TAOf)*_4U z3Y29ngKXa;NwB^`t!bR2-{Lx=+@oB+b(Qu)pLFW-=I)dS77%6UGN_*~oEkOJ358s- zgl7G~RcOw5laB@p*Xtlto5S}Ed1tOb*J%C3qBKJ``DYv2Lx~E|`J=YcVql?n!dh~8 zos`yRk*_#7S9NeGkvh$Pu6kU531u~nSxT_-7qC{l?6k|@AJ^N4OeV(@Oo)>otlOo* zz!zFft(CFSN}*{5M3ad3*Bvyfz{Wx>4rWWkm2 zybG$u$*V{?I+o=E1s75nxbPk^<35f0Q7h_0idZ_Z;!jhX2NGoBUg^8jV&?m1ir%GnmJ6yYHQWB2?A=d7aS--g{7lT8{Z>eI2mw4w!HFwy2oRRqBjS!m;5IDI3kE!l^k^P4h~mTSlZZIjzQIZC{tB!@96~EM$n9- z=a*C*#KUlrZ2iy9c|4VQ?K=)s%Gr25%7e&v4E5M6Om$hMCQnpZh}6EjhLWBN^+q^v zF~#%K)|t@m2-OYSfx^fvK>)164@#>I`vz7`6Jh8ug;ZX zOnE@zVPmljdCs4tH%p?Z}L;9znHn0&dhSA5TgzCvY@6C00 z4^P4x8w5*`VBvSZ9T*+se2;Pk<9Qma_%M=IbPVVKMRwwiErkxm4+;}u{1Ua|3l1&a zN#6_Bs=pMhEH4SBUdVnPMbcuMc?!ugKizqM z{oDr>AJj{d)odqzczQ)6Pp<%Gw_7cxc^lhlJPB7THswkN4NA@%c<5!&*tj0DIjm`V zGfxxgmzzT4MiFUoenP%pi+Fdfr92*iH3QcEA{~~b@*h-`f4{#r zh=%>bF;v^(oUS`#?GzF>&wBD0b4A~gtUv;`&5-xUL(rpYMj8o?HrJ5M=~vK=Xb3of ze8EkjdDaYa!9yi1XOk=3xp={75BOv&MkFCnGEP%l|>sAtjQ$R|B$ZBD>4^Gl4i$?Wb#d z611uE8_~2y31(giJv}It2PM~ju1qiCIEFs3$NbL^NI~l;`i~PK5Tym+Z=nyEDDDIe zdjf($lO6qu%qAlafK*syP=Y43m&YIw2d0|&>Awt<-B{AQ?FeUFlN$7J$nFOINae`h z+j7M_T;uc50ST1|G;>pxUQquEZRqwGNl0YJK!iwxWC!Qmie7t)2I=Eq#QGg&eb;Lh zS_KhMEHEsn^$6(I2`zO93=^AO~ z3Y`-UqzG%@0ltn%l9F+A6;vYGAm_7sj8?r2>2t>~{=6FWE&pqn#H}gl?kK*4yOasf zGil<4RIM=ke%!X!FoaP!ZdA- z5+rmM0yKWf@aOtMe^AiH9n}vfL ztBoipPyKvv=u32fTkyY{Px0x1wTvjy`$UOi(6v))Tc z{(?Mp-U|SCE^DA4<+fr)Y`}>gFT88*(qSlBtI9ZNoDOC1J zQXHOq1i}lTmO})DN!jmc0rV7+=PXN)=2}@W92(-aROJNZ>}_s9SJMT(j6@`&-waxe zeM>swj3Vg-;hrS|E&?(qk%Xa}ovEs-NFk0Cr%}N-1Nmxb4jzSdlyipWK$NRyV$swd z#Mhnq8OP3;$@hIh!|TNwW5Xs?S3`%+?2-!#Fc5h48J}qz`ZM|Q z11`rDEDl<;4u|Ik_ksCBcdDUZn!D#A5R3U9sb1BCMSVo5X#erW5eMd)`qjhBE8NfY787VF$Z7T<8ZoafHfG0edbYgF*ME_)r4woiW8UWx$Ni3uK%S0tpV}N(K)Ypr+x*GG5VnA(tZ61S!LlL<>VDqMqe`TF9+D8EwEx1&| z+;tP~0@!GY|MN5&`r`uE|6v}zLv4iqGN~~nIC3*lGf$mb;Vj%wPQ};DLO1FIv6ur) z&>FP~pP=^Z?VpyarKsLcTa^O)&vrJ?ffoQN%>YcHCFPuTMn4nIGZw6O17&Z)P);^l z3iL(^T}AT8X}s8TT|)&(ULXO%(hM_OYK&xMchdLzy6ycozm3f3o7zo*1%RQ9^-$$q z<3SUhArBDrd)vBK)({qzcr&uQwK6DKFj#5`1q?s|4X!>12bJtC9TA>{0X|VT=z~Nc zEmE;f(5kS;x@E`1M1DkSblI2}lai{N2pNLvPNtb&VlC7b+R5(xU zROLcCakC}V>V^B+3cx8k={;6GFcwvh;+)v60&9tTcgG-u)(Y?ebm$8T4DM~&HKBkm9auBoYW z<=Dm>8xWCskZSr**D4tWBhlaN@x>2d&InkHV!$@3N+oAOr&SCy17fUnsuqEUwip4r zjneMVqYx>-d^;~iaJIqlEAN8&26DD>mAdU~ zcy8$mj9c-r)-NHEm_}Q(S?DQ;?h`?^Jr_b1kgUyRG8GW6X1vgESjhUI!2rTUc+9yE zTg5r|*;i%H`<9h56I&M`X}I_5`-Bu>V_bAbjF5Xv3&3>#IJmwz1}ig*5PWnha5G+- zu6hV+`OSBb;ov8jWuaA*znl2{qJW6wbQjio2DAZL8amwyq2plQ19nujqbEWW?~P*I zNDaJ`{)?}dtt8M~8ID*kd9-f&K?|jyvC$sxA65B6fPfx`hSQm~cW(iC~kE&%6r!1Nf$E%y2`4T(4#u;rACT`zE6a`nDa5_r4{vG>~ob_R=dOYQ^LvQu=xsAI) zzH&z0S%7Ztc^T*j)~hkXf(n;exi!0RUl590E~LF?54Z-pA-nW=m(SqG&WSLDv+c;w zisY#~QppWsmH)$_^BBT33IUW9yX>Es2xm;d7?htXsGqWw3v%l$JK2AxV3&6lzl?!Z zW6xsgKcLy2oPPHY$oy0wW6s8|3DgGIkDRRqqn*=>+VgRs#mj3T`aP&4?Bpx?F%Ec|~ z*CkLd2?o({CXNn72I$*YFJ##+xcVhZ#`Nxz9RT4bazdwwmw61zDJOcRYCo?d>x(hu z74j7{B zWBWQ)W#h{~X)al}k_@XM^^IH3YNfu1g+#a+E-V5K_M%OY!+ZsF%$0d=Hr%W41xd=M zEM!R5yIBIC8F2)j?Qd}`9_o7gPUxW0_=x4om#sZDj$6>CD4bYmRD1VKFf18ohePhp(amE5Sa-oQxSS5se zA5m>)fC<`o6audyi!q#qI6?(tCg?|loJP;Ec_c+{VESwT%|U2}#F(Dt>4(I5-|z?c zdw3|!d==wsx}azFM7Mm9s*p7L9ImZvXCd%Q5>Neo>}kB%=Q5EhP=vK_fk8FASd?aA z=ha1O`E3g3L03!?^*$IMT?f(o`79UaTU7+8%>q@5Zc$ zZs=aozN9bh9*_rYi~kwye?tx;jFS0l3c>rb+!#mBHo%lsKpZAU5wJ0&42rbYcTvbd zh`1THt9XoiI*>i=?U8bT(l)7?TP%#&mJDh>+Q*`{E-t(Ds+4)G6sjEo>TU)lG|Px~ z1o5(uMdk0G?n;UAU#NRmg51$@kz%zc=SSxio1k={XBnby-))5j6e$2SpfJPW?|UzL z6B_7aH7#;LSQ}*c&BimqLL3S-%JNSJ&_Zd30wfYf98!xSmz!XK#>k>`5!D92^0;K^ zImeHo1L>)u*D^Lh^Sr{+8|2O&8flXuyQKzI8Al)y38i7XUlq75=!>zwWY*RoCzg_; zPFPwW@8RX1qP4Z{s(y_+MaZb5dw+LYx)HZ1Kpe&ZeujD7t*QITpdB_Dt*UL{#2}bl z5S}!?DJsFaxBqWLHfP{*9eK|J!^l<64(%y_FQ#NIY3L&L2>U*v{h zfgA?VI#>I?=|9}Qc>j3*(DxolZNLvfqChCPK24c&ZDiu#;2@1(SRDO&XVd$?3 zU>Z2+G36ic69Qz{SQBE@V5=jyEZtRTIfkctjv=jbEFM)2IE!_Fq6n1#O263U58Oe$ zuhc{@H?6*)uidgcqu~F=13le-3$$xDlGnxtd|F*vc^q=<2fI9am77!U4s+itrRm`Zj}xQ z`U>UbFHc0FWAZ0(|896Inx-TALoS*T`g4}FB-R;AqYC2u%_6sb7N0@)5;HL|CAO!0U%hk1B#Q>p#qAjaw4<(N;d z=~di{tIF+hbhG`@o~h-J-l$jfK*qw=OJ96yj@RL-8*II^i87w{CJ23Hp&JEgSbJ%d zx%GFXC4vBKDGpV&*j{%xkIB&Oz(zn?21c*HKyU7*tsoduW|ju%Sv$h2N)0IBp*w%j6AAc8_5jER^UDCLkkp}zT3Nz{=XZzPIL*xjP5N(& z1G^b_DTT7g%Cw&9R4T1P?IUaadni9+B%RPmNmpoU!TDg+%2(|Ykr6#zE(BZnSBspJuPc+-_?|6242)aj)C1rLNS}qWm-XGot z*fGSGcw@?uJ^lK<{O(W84h<-Mhwqf!;F1npj$;r=?ILY+)@rsdFJ%-$zIbRM~yp)^H1I zz4iq(O>CarOuV~&n0|cQJVeP#waPc@YvSVB2fD8(H+5xf*|yX4S>lCLj8SgDOxV3h zEtu&DYL53|4RKnxYaT~dA(X7iB}~o=1KU#)Uu3*dFMv)WU05)WO?QNWqQbqj z+=pbjcTb2zq14&K%);Wveh+vyB;k#sk-7kSW+g}B(TwZhoS|ofU2-y3h}lbBpL=%Y zi|7WN8O~II2eXZ|Euy@5=F##S59lJ!sq+hTKj??GdZb$Jk9P%{NJmc!yx_{L<$ms+ z)#z}#U0zAFvMvN#fD?mWIbc_JHx+iHQTT1gY^1!cJHq1?-kG3{GNMl70kl{LD1I!~ zGsVcO)IWffocH&fB-EIFE+MeqK=(wP858J0rka-Bs~>*He8%}o49w~YH12|>^0 z{Xl_`0G*aRqm;{?Lx92z$Y5}M8U03GkH!fc5BTD$KY&eCyhLSHK{eV^^)w0x!a|Kx z`ZbcCn{QM501;JN`+CMBz!DYK0_d!BWV#=AEoGCK4nf!xQsb$I;?mMGM9!_ymL9o0FOKCTqZv$3>3ZRe9R(YaloOu&99c z;UBBD9!9_#NphaHG2*V8%!Qq4R+GH6{~VTb6&!(80&KN~(Q+WrT0bTA|R66tU@ zpVaj);+e98H`N$=Sj*Y*CBzMh-ro2(>ZhQeeS1fW!Po3Jf zQ$V6yT3c5L6(GAcz6*3#Vb5&*!1mjNQY zLz@V9YYb1YZL1wZcA_yv9bhtl%NjjgXN@*R2_V$!pcmUwSKftg=jhMdNxlt{(f>^i z%AAWtKA|IW=v)>P1{g6H2l_>5kCwpdqwHOUruIu~rU(1zI&nLW{W081K8|LzNfSQ< z=9v?y1H>xuzSws73xt*Ati8)H^L$;*+$o52m3X|90!bK>$eYC{olWVB#r?&Ql&g~sfKt|iwtKDSs~Xn zhwE#o4bsaJ**T}A=T==LyOX+1r&fBW46=%)&pz3M7=cB_R_D(=|M=J6;QjR*h{w7Y zVJKKnQ(M7dzc+x%NgEtq$!k$V8!$+TO!JVp`N6+rcV9(Fxo6&+8~!FHZGfs8fziR` zcTx0O4r$WnC~zWhNge8HSVu1aaCc$_{(iOAb(C8a70=oH_fdZ!EVEiQQRZ_crd3d3 zwvQuHPY7D1T%{%h1#Cw@%uM)RY9=js(71Z~M%{HQ8qgJ-+auTt10w%F z#)V40B(7N9l4+y2Qt%UWtS5C{rhQvZ8*0D}Y*TwI137JyGUd(*+Jd)comFR86(92oV-Vxxvxgs1ZEb{Hyh%L?=WSb30Z+u88IqPNY z-g`NyN1+h5IFT6FY7gbNr#9?d?s6ePcJ~`Z{aoc<+!O&y+{93Z zDNZ5-4}?PwWYE`5JThhQxCH!RTa3WWOAtb-tbhoJ^$BdJMad+)LfwBntRUQA%C)`3)%kQ@^L zAc>>EMnX?DWpXJ4$1B~J&oYI|ZUQMF&ChvglqdOMA#amP=#Qx>|$uv`#ckejWXZm*7p0LM_ zEJ3W;eFRFDyV)TEEW21u?;f|GMEW}qxhz+6WljVzgj0&4_|s<}w*I#tnI}%mr`#m< zk2$?+Y&n|{rDce%7QmvS#DWxJ7ac09ZAUtp*97hjV!_iXW|drtVMQT9hHbZ;GN+JA z(K~DCb;?wZR^=^`AF>xN-fu7M#ArwVv3N$aLIN#rfTK={>V`f*Rxdyh!wj4|{ls0c)6l$pHrmOo&#`uX30|+dJVOj}wx8z-rM}bLHV-PXv4A@s}Ec z-J!1?;lI05qBF3Jw4?M@vmy&-=l+cNQtH$?2TDT;98DYMO{ho0dV||-{Of0Ss|BJ| zAdbPWFe~`uC@eR@sA~anIlR*vL}oLKRW$vR0*RZ{mdP{?8_V(0Rk+{l)>@Jx3jtU| z8spZ=crn$s{#Yu0C|I93;_aO$u?zX*<~hcs2b`t}Y23_^axr;Lsf*$+GYk~*`HVt$GEsrE+|9?6}dxcDN9{_6#zeJ7-hcR)?E*(Npkh4EsP0FYT&<-uKHgAPgE(UOV+>UdPpY0k(peaU2>*Vm=$v74mX2(bt;)#5hHx_5RZ2<(jl=ZTG!VjB58ld zp4*9?=8qdKA>+mJA;~|!-@Zw{7;>_r= z0U$e{me$fcpH-1sleP{f-N?eX&Q=G(yj=Ql;P>05y5dJ?ydE*#GUsHj0QQ zd>3|FZvGAQT7u~;!Yf?96Ot$g8_wS6t)zKOHY~xMNjWmNX_@99bMPo*&F&FysqRtdhIiP3Zv~9=gnt!y zkR}Jx{e3#quH3%`@MKReG#4h7#5ZPt>m1FNGXET|U8EAPtLw!LV+rSAJ z^jl8wDYiI`nfPp?uPb>sb_~5d)yd_qOpJPLH;bI<69?PT?XUF~jN+9=%PfE}KX=uu zzH@zU@K^ebRLuve$Dskl@r&jTqp>^ffXTpC3S!r>>eW4zihN#R=CWl85O{qYM9Q@(BJ4h09p%2JPA zxm09-O7#p8Wf$K!q$Gnl6a{z_Q^-Bghp{BLCfv8bd?5v~BRaSFDRLx>=ujKw*)kcAYg-Fy*|i|=`bCHJ14sz2&Y3EOB=<+&Fq0U-eJAaFL?pIlUrQBW8xSR>*cLB& zrq!gPg4>+eG+5sF1rah?b+L{IyZv&}7q7_4+e?){o^4$PsM>Y<>VEThwx#(;1hQSV zwL>K%gZdWvcX%^iV>evoa%=IlV$A{T>kBG_T2VMndxMq*q6NtYPyOg8aqz{g$XH@K zMp0hkKJnrE&7VKbQO#J~j~`Ql&_D5}{lG}$`r-M^zX&^WbVzMkRb{I&coAzsQy4GY z3`IEPlC_Y}1e4~6t^mr+;2;~i{@`&tfU{|}S`@>13EHQ@CGBSLf5lRzUvMA`=VIxaw<3 zqF?Me3`zC3-fk$c$_nF-zMOQ5z?Vg~*zL+k5>^9IC9^lRXg>o97R)_IibQGahq}@- zMW$-b1;GOWX@8$1TaB?iiuE*N#s&?!Tf; z7q>x~Zghq%DJsa3V_xqm$huJUFx9{##IQCp^UkahliDn_XQ(jQdq{jM8Di(_T9p8M zkJ~!k8TGnk6r`9{72V_P%3*moZo}@G57%mQleFNPC|8D$op&`U;k|Y`uco2pTK2D z#=|ZX!o#}jXRx!i61pr78B)$pi92Zu@DJ+>dHqZB%(k{=6TD51`P@M z)emx06(=k>{Da5vZrv`j-(^b$Qlr>~-Ef0P#T4xj*{}9n`Nbb11~C;TFAT%D)U*iR znY|~v+H2RW*^MUyYvX>T&In|U6~Ag93EzUS#^*tLwJWt1LRe5J#j0nhWQt3bc#`qU zPa6)j;{1!PdZlRv;P|)GiM+}Z`+~GjcQ2F$U(B9q@RM;1h2ckLj&3p3`-6vXFP;si zKFu|s3@qhm=`0;Lqh&@1lVTVfAQ@RcDZ#FU5OY%xlHgw@;jeD2!cN}DH89?Z^Sx3r z1ovEQFwiD)y%<&PMG`bqm?!M?VnC5ZHeGrs6S7leJ*tU}`DIsR2jdiC41D57#Fl@s z&-NZmLh-b{>HSCQ9w*Lk>3xXf{0X#_iif1V$`PMb(8adBUM|)#gsoS&%OOP()T)W{ zj?;QTmPM-!jqKP~yXe;yymAUGf13^rU7f0#T^@uQ8K@qCuzwD|{ojv$No$s7HFh%1 zE_Z_;X&w$+UafPu^mbi!V{K$g!;7^oxzBm6Ma0D7yN#c>aL`ItiSyglL*?L5`7I(@ zeY#2Sf*GB~Z=`l>DnUO~IOshuGgNMUJ<)xIWIK>nchV#K{I>WZ4_s=_UqYDNnnk_c z@LDUK_^smS+nP*Jfy=;C8}%8u$M3{vm>u3)xAn>KF#3dOl7rRp9yMg`&_4y@NvxSc zm|gC1srgij0^q-ITWhT4WINDb0tBot&ejiNYh*Uwj3ePd+jOgWpz=>r>m@k7eJ7nO zUf(*-b_O*|d6kNi+bCuzZta-T0i?Y5nQM!6#AgGwa=hRq-Ng|70!Ovu0Gr=Pn#Clu zO-)wn49%8jChwIF{Ip&C^nD9|BL!9YdK+H~y|6nH1)O$bZiPRHabv)?1LC*T@BNWo z0kd$Kwf_9F8w$|V0uwr4Axxz`YNYc?i#P_O0eomtxC-4QG!9sFeJ{XNzt* z?mIapD(NO{JdY{yi)bNNrpmx4dhnBz0crD~r+)*WQ*;z`&UFPglAbd=zjU*HoD9nd z8fiI~mhp~0X+ha_2JssuM{)XA|K9E*3|xN(=oQ9Dimd^HOJ;NWqU}xC(LHZuZ}x#S z!{s$@#x)BaDsaXg)eLQF3hLvUStw|zzppA$18KvxF4>iY%mm2^^O z_2tconD2-9m=663zhuaTpRu04llBNBCj!-Sp7|FK@M9b*}*>HC3pf$aXr&5@#V@Q ztV1XuDAr*m)u7|hyosR^fZoX|*I2dg1(j^A@|W6sD_XM;v=VLzfY8+lhfyrjnpmE@ zGr{iqMxe}pX?3~%ue`_aD3HILBN8j*6C6ST@HmMJD^al@%C%-`&7EHFM!VtPf#fiz zsAf$ga?}+jUMGT^>cJ7ZT8Yb2=Q8aUlMgIZA1ljhajYxv@FU=pRU;;FX4`?MPO%E} z=_*jFK+uXcA8yLp;xTr9rpccX^EtdyRYJY^?l z33A$ft9G{iidn7@>$|JuS<4jVxqI|8){G}6*<{u7^05J*NF9n`_9If(;*3Uh=ZFhm z`@RLKN<8vXHZ#_0)Ci20SaTd3P-X>b7$Jahv5;G9FYLD{Z;Sh00_*5ho&r*_>3M*p z={nXD<$tb@qSv5HPm(LsEd3b6wn5strFRJ(PuXev_wdkw%q!AG!5<^c*E5}VK6MIQ zVN!8v9d1QG;>KmF9`1>V4b2v|GiVFCbKfS9;tw&czfP7MA5Jr{|4UD8x_FGn{0tce zlrrdX|JZ8{t!n!hNJg^$9@_>gM6CIOk~eG7R^55_3l{8UbgI50A)IvGXxX#2<<=GU z1A+(<(sj?Q{GoNlFO(4J{!r2p7ce~}kkI@&CE27XkWa5hu->n^nmo#DLSf^qF*K_Q zLvjeGAUQ*c6sy4!zgE(L5&xEThlSFh~PN~|u-1h3Lz#jlSKbgHSEFFf;JB+J`F z0ab{2HjHunSxS~=R`YayBDf?Wz<$6>SPAu=;uQVmRY zv|y;^CLuGosWp)CoItT@JptWUBL^2ev9;Tr)VsNOeDqyF{PopYaQ;}YxZ}1kvrEnS zeRkcWO@87#YF84uMBttXV}KvbB`cZ5ry#zc1RWPWts z&ldn8^c;puF2qa7%#gXkc1r2%vGC9|aOW5)XnWiY85^*=Q#HRYxY5F2L7I?>j!zQ0 zW|awvF_5QWQ?ILjgL@)%`gtqvT@WYty4>V`gmgkBgw!D;jEKE-h9;$ghusiiq(%d3 zo8$|KznBrQB(U~rex$&w_ep&dtFelo;`Jpi`@qbzds|Yt26e_OCPr8$wt@*}5Na>U z;EE-$8Pw9N(>9kk+`aTgn{--Qes*KZ&5Xr6vr0@SL^p`dZ#nMMIS0j$4zwG%IG->?%C7`C_(k2%E4?IPKHX@v-0yR`@mLkk z_~3}ee%Yil%oz~F7tIZ#{j)d!%#hp5{I5M~xD~=CcKMmFlF&{dn%TZ+i|#y1{V-~i zirGgK!T5`IR4eD}KJoQMWzBNZUGWbiI_6FTEk73^-n}?eAJ#&0?LlF^IR81I+ zeDBw!VFB|_@M+cIWy2^rR_i^{+1wxDhWJ=vst`}hziq&Ze0|-fBjBb4ZHroR@F9l> zvPS)=ZclZ|vB+ykK7tZr-o!;q4?={Jl>F9W%Uit{+?R>l;X+S;G!@wm&{UN?D;QKyed0x7NZ?QFc|Mf}oy z{*j~N+mlZr{}3wt>kR9-2~|i>>AYbiSt{g;opH@t=Wql>T<;xC12aPcEfYTiMT_G6 zxC^u#RNk49_P90Dp0A-SZRunY4&e7^_qt|1iASl$T*liTh-usXnMOFUZ}H%2FOTCC z`hhn~`?~grt%5j#TK0qoHm^l<+b4s)mnnw4S?Y)PaGB<-8nO;P^}4|5i?R~^^@+mJ zMU*mUe7tP4dLdUl) z3u@d^?I2QY?OIKm%f_g-gXx>_L#SS4OX4LDseTTr24ri^OwB)J6{PWay%~gU(|0N~ zQ5QxU?{3G#)7=T5jT}s*B(t2VhLIqrTPjsHYMGJ4Jzq@G8 z{bK}wb}Csjojl&~FLt@+Pdby*aO(kS-NIR{lkM>F&U;WNvi)5xSLGYAW%X!(wVu2C!-Hy*r`^~YiFUnWR+nVe<}p`%0ziZe8`Aa` z!#%k=U40bRyqf7mj5 z)LM-R{#lS3q>zZ*bu*KcR|yaJ5T=8e`5ak zPl@~(EDnYWehVyxd^5SkNX1DGxFdOD2qm5rU+@O2(9DSjLyDN3BZ!(KAVHq{g#{N;`KH^Oey-2YGd|T5B&-FADT8M+9orGWO^459 zRpm|IPOSVjqAOZXS$2bscmRpd;ue!Tg=B)nbi?jm}p5d2l| zEvDv**YsMW`WKO97QD4FjIc`jV1y!3=-~Npp@#pL8DvGU5I?ux5L#72WJlA|+jgY2 zswTolF6sO>G*0J;n8sVTa$kb9mSIwN&5Ol&l?OE;StOa28SXVv_y~nj{Om-D7xbKf zgrqz+uR;1C@dpqzs|ovHE>W51@UO{UJ6~S}7mPosM74oo;%l#|vV|qciwChU$-pyR zWzGP06S-vlK>IFWXf)$&eL8M5Vc+QDyNueU@RsoB|DwTT%>Pbb%D*4`{}2Dszw7+( zI{zDbg}2ZD2|wZgc%E-eh`zRO=hCSE_E%+W$oCzabk&b!E*&0{IPgDx%T9xPmLG{h k_1{1LkKcfIN7Be7&7H5~|9qB?X|1F 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
  • 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�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 literal 0 HcmV?d00001 diff --git a/docs/inkless/img/consolidation/retention.png b/docs/inkless/img/consolidation/retention.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9ed618b81a3093017dbb149c7dd1d403293744 GIT binary patch literal 70925 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ʧ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%0A>||P)#sDOIhb8B;avCkBsGT1gPS`_&4wM0 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 literal 0 HcmV?d00001 diff --git a/docs/inkless/img/consolidation/topic-transitions.png b/docs/inkless/img/consolidation/topic-transitions.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa20271693781d458cd763443e905bf2b5d23b7 GIT binary patch literal 230114 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 z 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

    -bIM5NKlIlkTZX1_kZ4+lv9j{o2 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 literal 0 HcmV?d00001 From da1a0f358475a7d30a2d99cdacd3e2dd392d8f2d Mon Sep 17 00:00:00 2001 From: Viktor Somogyi-Vass Date: Tue, 21 Jul 2026 14:19:49 +0200 Subject: [PATCH 2/6] docs(inkless:consolidation): document DeleteRecords across tiers [KC-332] Extends DISKLESS_CONSOLIDATION.md with the DeleteRecords-across-tiers behavior added by this feature: cross-broker consistent ListOffsets (EARLIEST), the control-plane cross-tier low watermark, and the reclaim floor that stops classic-prefix over-reclaim on rebuilt leaders. Based on svv/ts-unification-docs (the base Diskless Consolidation doc); this commit is only the feature delta. Co-authored-by: Cursor --- docs/inkless/DISKLESS_CONSOLIDATION.md | 92 ++++++++++++++++++++++---- 1 file changed, 79 insertions(+), 13 deletions(-) diff --git a/docs/inkless/DISKLESS_CONSOLIDATION.md b/docs/inkless/DISKLESS_CONSOLIDATION.md index 3813689dc99..a0ba0211b7e 100644 --- a/docs/inkless/DISKLESS_CONSOLIDATION.md +++ b/docs/inkless/DISKLESS_CONSOLIDATION.md @@ -213,10 +213,29 @@ truth**, with a short-TTL cache: has advanced above it. - **Read path (any broker).** `FetchOffsetHandler` serves `EARLIEST` on a consolidating diskless topic read-through the `CrossTierLogStartCache` first; on a miss it queries the - control plane and populates the cache. `DisklessFetchOffsetRouter` returns - `max(classic-leader leg, control-plane leg)` for consolidating partitions, so the freshest - authoritative value wins regardless of which broker serves the request (the classic leg is - authoritative on the leader, the control-plane leg on followers). + control plane and populates the cache. `DisklessFetchOffsetRouter` routes `EARLIEST` for + **every** consolidating partition (born-consolidated and switched alike) to this + control-plane leg — never to the broker-local classic log. This is required for + correctness under managed replicas: `InklessTopicMetadataTransformer` advertises a + hash-selected replica (usually a *follower*) as the partition leader, and a follower's + local classic log start is frozen at the switch, so serving `EARLIEST` from it would pin + the client-visible earliest at a stale value (e.g. `0` after a `DeleteRecords` the follower + never applied). The control-plane value is broker-agnostic, so every broker returns the + same cross-tier earliest. (Non-consolidating switched partitions keep serving `EARLIEST` + from the classic leg while it still owns the pre-switch prefix.) +- **Whole-log start & reclaim floor (leader).** The same control-plane value is the + authoritative whole-log start / remote-retention reclaim floor for a consolidating + partition, *not* the broker-local `UnifiedLog.logStartOffset`. On a freshly-elected leader + whose classic prefix was already evicted, the leadership rebuild pins the local log start at + the seal (and it can only ever increment), so using it would over-reclaim the remote classic + prefix `[earliest, seal)` and reject reads of it as out-of-range. Instead + `DisklessLeaderEndPoint` reports `min(X, localLogStart)` as the whole-log start (so a read of + the surviving prefix redirects to the remote tier and the tier-state rebuild restarts at `X`), + and `RemoteLogManager` uses `X` as the log-start-breach reclaim floor and the become-leader + report — both via `ReplicaManager.crossTierEarliestOffset` (`X` = + `COALESCE(remote_log_start_offset, log_start_offset)`). This runs on the RLM leader, which + under managed replicas differs from the broker that served a `DeleteRecords`, so a + broker-agnostic source is mandatory. - **Cache.** Caffeine-backed with a TTL and a monotonic `put` (a `Null` implementation disables it); owned by `SharedState`. A stale entry can only ever be *too low* (the safe direction), so it only delays when a retention advance becomes visible off-leader. - **Storage.** The value is kept in `logs.remote_log_start_offset` (migration `V16`), @@ -229,14 +248,39 @@ updates are coalesced per partition and flushed once a second, and only strictly values are sent. The configuration and JMX metrics for this feature are listed in -[Configuration](#configuration) and [Metrics](#metrics). The system test is -`consolidation_retention_across_tiers_test.py` (`RetentionReclaimsAcrossTiersTest`), which -verifies the earliest offset advances past zero (and no further than a surviving cohort) -after retention reclaims data across tiers. - -> **Not yet covered.** Time-based reclaim (`retention.ms`) drives the earliest offset in -> tests; `retention.bytes`-driven reclaim of the earliest offset is not yet exercised. -> `DeleteRecords` across tiers on a consolidating topic is also not yet covered. +[Configuration](#configuration) and [Metrics](#metrics). Several system tests exercise +the earliest offset on a consolidating topic. The two retention tests follow the same +pattern (drain the born-consolidated pipeline until the early prefix is remote-only and +the topic earliest is still `0`, then reclaim and assert the earliest advances while a +contiguous tail survives and the reclaimed remote objects are physically deleted); the +`DeleteRecords` test targets a switched (hybrid) topic (see below): + +- `consolidation_retention_across_tiers_test.py` (`RetentionReclaimsAcrossTiersTest`): + time-based reclaim via `retention.ms`. +- `consolidation_retention_bytes_across_tiers_test.py` + (`RetentionBytesReclaimsAcrossTiersTest`): size-based reclaim via `retention.bytes`, + driven by the `RemoteLogManager` (not the WAL-only Inkless enforcer). The limit is set + to half of the bytes this topic actually shipped to remote, so the boundary lands + deterministically inside the produced range regardless of record size. +- `consolidation_delete_records_across_tiers_test.py` (`DeleteRecordsAcrossTiersTest`): + an explicit `DeleteRecords` on a **switched (hybrid)** topic, before an offset inside + the tiered classic prefix `[0, seal)`. The receiving broker forwards the local leg to + the real KRaft leader (`DisklessDeleteRecordsForwarder`), which advances the log start + and the control-plane cross-tier earliest. It guards both **Problem A** and **Problem + B** in one run (retention held unset throughout, so only the `DeleteRecords` can move + the earliest): + - *Problem A* — the client-visible earliest advances off `0` to a single, stable value + that is the *same on every broker*, proving `EARLIEST` is served from the + broker-agnostic control plane and not from a hash-selected follower's frozen local + classic log. + - *Problem B* — that value settles at *exactly* the delete boundary (not the seal), and + the surviving prefix `[delete_before, seal)` reads back contiguous with the correct + content, proving the consolidation cleanup did not over-reclaim the classic prefix. + Previously a freshly-elected leader's local `logStartOffset` was pinned at the seal + (and only ever increments), so the RLM reclaim floor / become-leader report used the + seal; the fix drives both the whole-log start (`DisklessLeaderEndPoint`) and the RLM + reclaim floor / become-leader report (`RemoteLogManager`) from the control-plane + cross-tier earliest via `ReplicaManager.crossTierEarliestOffset`. ## Implementation @@ -585,6 +629,21 @@ behaves like a tiered topic for clients. epoch `E_d` mapping (epochs below `E_d` map to the seal; `E_d` and above map to the diskless LEO). This enables follower divergence truncation. - **DeleteRecords**: supported for hybrid (switched) partitions. + - *Known limitation (authorization).* When an authorizer is enabled, `DeleteRecords` on a + switched/consolidating partition requires the broker's inter-broker principal to be + granted `DELETE` on the topic. `InklessTopicMetadataTransformer` advertises a hash-selected + replica (usually a follower) as the client-facing leader, so the admin request rarely reaches + the real KRaft leader directly; the receiving broker forwards the leader-only leg to it over + the inter-broker listener (`DisklessDeleteRecordsForwarder`) as a plain `DeleteRecords`, which + the leader authorizes against the *forwarding broker's* principal, not the original client's. + If the broker principal lacks `DELETE` on the topic, the forwarded leg is rejected with + `TOPIC_AUTHORIZATION_FAILED` and the operation fails. Deployments where the inter-broker + principal is a super-user (the common case) are unaffected. This is accepted for now. The + proper fix, which is wrapping the forwarded request in a KIP-590 envelope so the leader + re-authorizes against the original client principal is complex. It requires API changes: + enabling the `Envelope` request on the broker inter-broker listener, which today accepts it + only on the controller listener, plus a broker-side envelope handler, so it is deferred for + now. - **Transactions**: transactional offset commits are allowed for diskless sources. Abort markers are preserved for the local portion of a consolidating partition; transactions spanning the consolidation boundary into the diskless portion are not supported (a @@ -610,7 +669,14 @@ no loss), `InklessTopicTypeSwitcherClusterTest`. wiping all local copies), `consolidation_switched_read_from_remote_after_prune_test.py` (switched topic durability), `consolidation_dependency_outage_test.py` (object-store / control-plane outage during produce), `consolidation_retention_across_tiers_test.py` -(cross-tier earliest offset after retention reclaim). +(cross-tier earliest offset after time-based retention reclaim), +`consolidation_retention_bytes_across_tiers_test.py` (cross-tier earliest offset after +size-based `retention.bytes` reclaim), and +`consolidation_delete_records_across_tiers_test.py` (after a `DeleteRecords` into the +tiered classic prefix of a switched topic: **Problem A** — the client-visible earliest +advances and is the same on every broker; **Problem B** — it settles at exactly the delete +boundary and the surviving prefix stays readable, i.e. the classic prefix is not +over-reclaimed to the seal; both driven by the control-plane cross-tier earliest). From bcefd9d08bee33d549f4b7d1f44e34708a7ef40a Mon Sep 17 00:00:00 2001 From: Viktor Somogyi-Vass Date: Mon, 17 Aug 2026 09:43:33 +0200 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Eelis Kostiainen --- docs/inkless/DISKLESS_CONSOLIDATION.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/inkless/DISKLESS_CONSOLIDATION.md b/docs/inkless/DISKLESS_CONSOLIDATION.md index a0ba0211b7e..d7f693709b3 100644 --- a/docs/inkless/DISKLESS_CONSOLIDATION.md +++ b/docs/inkless/DISKLESS_CONSOLIDATION.md @@ -561,7 +561,7 @@ Broker-level configs live in `ServerConfigs` (no prefix) and `InklessConfig` (un | Config | Default | Meaning | | ---------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `diskless.remote.storage.consolidation.enable` | `false` | Enables the consolidation framework. Requires `diskless.allow.from.classic.enable=true`, `diskless.managed.replicas.enable=true`, and `remote.log.storage.system.enable=true`. | +| `diskless.remote.storage.consolidation.enable` | `false` | Enables the consolidation framework. Requires `diskless.allow.from.classic.enable=true`, `diskless.managed.rf.enable=true`, and `remote.log.storage.system.enable=true`. | Per topic, consolidation runs when `diskless.enable=true` **and** @@ -574,10 +574,10 @@ born-consolidated topic is created with both. | Config | Default | Meaning | | ------------------------------------------------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | `diskless.consolidation.num.fetchers` | `1` | Number of consolidation fetcher threads (parallelism, independent of `num.replica.fetchers`). | -| `diskless.consolidation.fetch.max.bytes` | `1 MiB` | Max bytes per partition per fetch iteration. Larger values reduce control-plane query frequency. | +| `diskless.consolidation.fetch.max.bytes` | `10 MiB` | Max bytes per partition per fetch iteration. Larger values reduce control-plane query frequency. | | `diskless.consolidation.fetch.response.max.bytes` | `10 MiB` | Max total bytes accepted across all partitions in one fetch response. | | `diskless.consolidation.fetch.min.bytes` | `1` | Min bytes to wait for before returning. | -| `diskless.consolidation.fetch.max.wait.ms` | `500` | Max time to wait for `minBytes` when there is little new data. | +| `diskless.consolidation.fetch.max.wait.ms` | `1000` | Max time to wait for `minBytes` when there is little new data. | | `diskless.consolidation.fetch.metadata.thread.pool.size` | `4` | Thread pool for control-plane (batch coordinate) queries. | | `diskless.consolidation.fetch.data.thread.pool.size` | `8` | Thread pool for object-storage data fetches (also reused by the cold path). | | `diskless.consolidation.fetch.find.batches.max.per.partition` | `0` (unlimited) | Max batch coordinates returned per partition per control-plane query. Larger values improve the coordinate cache hit rate. | From 46c860b644ba4605ee88359989ff471afe438dad Mon Sep 17 00:00:00 2001 From: Viktor Somogyi-Vass Date: Mon, 17 Aug 2026 09:55:59 +0200 Subject: [PATCH 4/6] Reword the testing section --- docs/inkless/DISKLESS_CONSOLIDATION.md | 82 ++++++++------------------ 1 file changed, 26 insertions(+), 56 deletions(-) diff --git a/docs/inkless/DISKLESS_CONSOLIDATION.md b/docs/inkless/DISKLESS_CONSOLIDATION.md index d7f693709b3..69bf90e6b10 100644 --- a/docs/inkless/DISKLESS_CONSOLIDATION.md +++ b/docs/inkless/DISKLESS_CONSOLIDATION.md @@ -248,39 +248,8 @@ updates are coalesced per partition and flushed once a second, and only strictly values are sent. The configuration and JMX metrics for this feature are listed in -[Configuration](#configuration) and [Metrics](#metrics). Several system tests exercise -the earliest offset on a consolidating topic. The two retention tests follow the same -pattern (drain the born-consolidated pipeline until the early prefix is remote-only and -the topic earliest is still `0`, then reclaim and assert the earliest advances while a -contiguous tail survives and the reclaimed remote objects are physically deleted); the -`DeleteRecords` test targets a switched (hybrid) topic (see below): - -- `consolidation_retention_across_tiers_test.py` (`RetentionReclaimsAcrossTiersTest`): - time-based reclaim via `retention.ms`. -- `consolidation_retention_bytes_across_tiers_test.py` - (`RetentionBytesReclaimsAcrossTiersTest`): size-based reclaim via `retention.bytes`, - driven by the `RemoteLogManager` (not the WAL-only Inkless enforcer). The limit is set - to half of the bytes this topic actually shipped to remote, so the boundary lands - deterministically inside the produced range regardless of record size. -- `consolidation_delete_records_across_tiers_test.py` (`DeleteRecordsAcrossTiersTest`): - an explicit `DeleteRecords` on a **switched (hybrid)** topic, before an offset inside - the tiered classic prefix `[0, seal)`. The receiving broker forwards the local leg to - the real KRaft leader (`DisklessDeleteRecordsForwarder`), which advances the log start - and the control-plane cross-tier earliest. It guards both **Problem A** and **Problem - B** in one run (retention held unset throughout, so only the `DeleteRecords` can move - the earliest): - - *Problem A* — the client-visible earliest advances off `0` to a single, stable value - that is the *same on every broker*, proving `EARLIEST` is served from the - broker-agnostic control plane and not from a hash-selected follower's frozen local - classic log. - - *Problem B* — that value settles at *exactly* the delete boundary (not the seal), and - the surviving prefix `[delete_before, seal)` reads back contiguous with the correct - content, proving the consolidation cleanup did not over-reclaim the classic prefix. - Previously a freshly-elected leader's local `logStartOffset` was pinned at the seal - (and only ever increments), so the RLM reclaim floor / become-leader report used the - seal; the fix drives both the whole-log start (`DisklessLeaderEndPoint`) and the RLM - reclaim floor / become-leader report (`RemoteLogManager`) from the control-plane - cross-tier earliest via `ReplicaManager.crossTierEarliestOffset`. +[Configuration](#configuration) and [Metrics](#metrics). System tests that +exercise this path are described under [Testing](#testing). ## Implementation @@ -663,20 +632,30 @@ warning is logged and those offsets have no abort markers). cross-boundary reads, concurrent produce during consolidation, classic→diskless→consolidated), `InklessConsolidatedDisklessReassignmentTest` (consolidation resumes on a new broker, no loss), `InklessTopicTypeSwitcherClusterTest`. -- **System tests** (`tests/kafkatest/tests/inkless/`): -`consolidation_pipeline_test.py` (born-consolidated pipeline + WAL prune), -`consolidation_read_from_remote_after_prune_test.py` (read every record back after -wiping all local copies), `consolidation_switched_read_from_remote_after_prune_test.py` -(switched topic durability), `consolidation_dependency_outage_test.py` (object-store / -control-plane outage during produce), `consolidation_retention_across_tiers_test.py` -(cross-tier earliest offset after time-based retention reclaim), -`consolidation_retention_bytes_across_tiers_test.py` (cross-tier earliest offset after -size-based `retention.bytes` reclaim), and -`consolidation_delete_records_across_tiers_test.py` (after a `DeleteRecords` into the -tiered classic prefix of a switched topic: **Problem A** — the client-visible earliest -advances and is the same on every broker; **Problem B** — it settles at exactly the delete -boundary and the surviving prefix stays readable, i.e. the classic prefix is not -over-reclaimed to the seal; both driven by the control-plane cross-tier earliest). +- **System tests** (ducktape; `tests/kafkatest/tests/inkless/`; see + [System Tests](SYSTEM_TESTS.md) to run them). They cover consolidating + topics, born-consolidated and switched: + - The pipeline: WAL drains into the local log and then to remote, the WAL is + pruned, and every acked record is still consumable. Consolidation JMX + gauges are asserted along the way. + - Durability after local loss: once the prefix is remote-only, wiping every + partition directory and restarting still serves the full log from remote, + including a switched topic whose offset 0 was written under a classic + epoch. + - Object-store and control-plane outages during produce: nothing acked is + lost; after recovery, lag drains and pruning resumes. + - Cross-tier reclaim via `retention.ms` and `retention.bytes`: after the + early prefix is remote-only and the topic earliest is still `0`, reclaim + advances that earliest, leaves a contiguous surviving tail, and deletes + the reclaimed remote objects. Size-based reclaim is the `RemoteLogManager` + whole-log path; the Inkless enforcer only sees WAL bytes, which are tiny + once the WAL is pruned. + - `DeleteRecords` into a switched topic's tiered classic prefix `[0, seal)`: + the client-visible earliest moves off `0` to exactly the delete boundary, + the same on every broker (served from the control plane), and + `[delete_before, seal)` stays readable. The same assertions run across + leader failover, a leader that rebuilds from remote, and a + born-consolidated topic. @@ -686,12 +665,3 @@ over-reclaimed to the seal; both driven by the control-plane cross-tier earliest migration that produces a consolidating topic; sets `diskless.enable` and `remote.storage.enable` atomically. - [Architecture](ARCHITECTURE.md), [Features](FEATURES.md), [Glossary](GLOSSARY.md). - - - -## Design history - -This feature was originally proposed as a design doc with four implementation options. The -chosen option (a custom `LeaderEndPoint` plugged into the replica-fetcher machinery, -then called "Option D") is what is implemented above. The rejected alternatives (a continuous segment reader, a queue-based batch extractor, and a split-merge in-memory approach) are documented for historical interest in -`img/consolidation/design-image-08.png` through `img/consolidation/design-image-12.png`. \ No newline at end of file From 7daf493fcf7c3af9bec390176dccad9922a1f9dd Mon Sep 17 00:00:00 2001 From: Viktor Somogyi-Vass Date: Tue, 18 Aug 2026 15:14:01 +0200 Subject: [PATCH 5/6] reformat using google guidelines --- docs/inkless/DISKLESS_CONSOLIDATION.md | 553 ++++++------------------- 1 file changed, 136 insertions(+), 417 deletions(-) diff --git a/docs/inkless/DISKLESS_CONSOLIDATION.md b/docs/inkless/DISKLESS_CONSOLIDATION.md index 69bf90e6b10..c077e27e9d9 100644 --- a/docs/inkless/DISKLESS_CONSOLIDATION.md +++ b/docs/inkless/DISKLESS_CONSOLIDATION.md @@ -1,147 +1,87 @@ -# Tiered Storage Consolidation for Diskless Topics +# Tiered storage consolidation -Tiered Storage Consolidation (TS consolidation, internally "TS unification") continuously -distills diskless Write-Ahead Log (WAL) segments into classic Kafka log segments and tiers -them to remote storage. The result is a *consolidated diskless topic* (CDT): a topic that -writes through the diskless fast path but reads like a tiered topic, with the diskless WAL -acting as a temporary buffer rather than long-term storage. - -A consolidated diskless topic has both `diskless.enable=true` **and** -`remote.storage.enable=true`. The classic-to-diskless switch sets both atomically (see -[Classic to Diskless Switch](CLASSIC_TO_DISKLESS_SWITCH.md)), so a switched or born-consolidated -topic is always consolidating. - -The feature is implemented and gated behind the `diskless.remote.storage.consolidation.enable` -broker flag (which itself requires `diskless.allow.from.classic.enable=true`, managed replicas, -and `remote.log.storage.system.enable=true`). +Tiered storage consolidation (TS consolidation, internally "TS unification") distills diskless Write-Ahead Log (WAL) segments into classic Kafka log segments and tiers them to remote storage. The result is a *consolidated diskless topic* (CDT): a topic that writes through the diskless fast path and reads like a tiered topic. The diskless WAL is a temporary buffer, not long-term storage. +A consolidated diskless topic has both `diskless.enable=true` and `remote.storage.enable=true`. The classic-to-diskless switch sets both atomically. For more information, see [CLASSIC_TO_DISKLESS_SWITCH.md](CLASSIC_TO_DISKLESS_SWITCH.md). A switched or born-consolidated topic is therefore always consolidating. +The broker gates the feature behind `diskless.remote.storage.consolidation.enable`. That flag also requires `diskless.allow.from.classic.enable=true`, managed replicas, and `remote.log.storage.system.enable=true`. ## Motivation -In a diskless topic the brokers create WAL files to store partition data and nothing more. -These files are write-optimized segments that collect multiple partitions' data together. -While these files are very good and cost-efficient for writing, they perform worse for reads, -because extra compute power is required to piece together a continuous stream of partition -data. Classic Kafka mechanisms also expect Kafka log segments to be read and written. +On a diskless topic, brokers create WAL files to store partition data and nothing more. Those files are write-optimized segments that pack data from many partitions. They are cheap to write. They are worse to read: the broker spends extra compute reassembling a continuous per-partition stream. Classic Kafka paths also expect Kafka log segments. -Transforming the WAL segments back into the Kafka log format removes burden from the -diskless coordinator, provides better read performance, and keeps the expected log format. +Rewriting WAL segments into the Kafka log format offloads the diskless coordinator, improves read performance, and keeps the log format Kafka already expects. -## Migration Paths +## Migration paths -Migration between classic and diskless topics has several sub-cases, shown below. This -document covers TSU-1/2 (and the transitive TSU-3/5); the other paths are handled by the -[topic switch](CLASSIC_TO_DISKLESS_SWITCH.md) and the upstream tiered-storage framework. +Migration between classic and diskless topics has several cases. This document covers TSU-1/2 and the transitive TSU-3/5 paths. The [classic-to-diskless switch](CLASSIC_TO_DISKLESS_SWITCH.md) and the upstream tiered-storage framework cover the other paths. ![Migration paths between classic, tiered, migrating, diskless, and consolidated diskless topics](img/consolidation/topic-transitions.png) -- **TSU-1/2** (in scope): a diskless or migrating topic switches to a Consolidated Diskless -Topic. -- **TSU-3/5** (in scope): the transitive path from classic or tiered topics through -migrating/pure-diskless to CDT, enabled by TSU-1/2 plus the classic-to-diskless switch. -- **TS-2 / TSU-4** (out of scope): disabling consolidation to revert a CDT to a pure -diskless topic. CDT is a terminal state. -- **TS-4** (out of scope): a diskless→classic topic switcher. TS consolidation is a -subprocess of that larger problem, but solves a different problem. -- **Classic → Tiered**: already implemented by the remote storage framework. -- **Tiered → Classic**: will be implemented by KIP-950. - +The paths are: +- **TSU-1/2** (in scope): A diskless or migrating topic switches to a consolidated diskless topic. +- **TSU-3/5** (in scope): A classic or tiered topic reaches CDT through the migrating or pure-diskless states. TSU-1/2 plus the classic-to-diskless switch enable this path. +- **TS-2 / TSU-4** (out of scope): Disable consolidation and revert a CDT to a pure diskless topic. CDT is a terminal state. +- **TS-4** (out of scope): A diskless-to-classic topic switcher. TS consolidation is a subprocess of that larger problem, and it solves a different one. +- **Classic to tiered**: The remote storage framework already implements this path. +- **Tiered to classic**: KIP-950 is the planned path. -## High-Level Architecture +## High-level architecture +### Read-write path +Diskless topics have leaders. Leadership and followers give locality and caching. If every broker is a replica, interconnectedness is high and the cache is inefficient: in the worst case every broker caches the same replica. A single replica is the other extreme. It can work in a small single-region or on-prem install, but fetching from the leader then incurs extra cross-region cost. -### General Read-Write +The better shape matches the Kafka replica-fetcher model. A leader replica handles produce traffic and replication. The leader or a follower can serve consume traffic (follower fetch). Interconnectedness stays relatively low. Cross-region traffic is avoided, or it moves to bucket-side replication. Caching is more efficient because a cached segment lives only where it is read. -The primary assumption is that diskless topics have leaders. Leadership and followers give -useful locality and caching guarantees. In a scenario where all brokers are replicas, -interconnectedness is high and the cache is inefficient (one replica is cached on all -brokers in the worst case). The other extreme, a single replica, is also suboptimal: while -it may work in smaller single-region and on-prem installations, it would incur extra -cross-region costs to fetch from the leader. +### Consolidation pipeline -The optimal scenario is similar to the well-known Kafka fetcher mechanism. A leader replica -handles produce traffic and replication. Consume traffic can be handled by the leader or by -followers (in a follower-fetch case). Interconnectedness is relatively low, cross-region -traffic is avoided (or pushed to bucket-side replication), and caching is more efficient -because cached segments are stored only where they are read. +Without consolidation, the diskless coordinator stores WAL segments in object storage. They remain there until `log.local.retention.ms` elapses, then the broker deletes them. -### Consolidation Pipeline +With consolidation, a fetcher reads the oldest batches from the diskless WAL, in insertion order so ordering is preserved, and appends them to a per-partition `UnifiedLog` through the `Partition` class. The `RemoteLogManager` copies those local segments to remote storage the same way it does for a classic tiered topic. After remote storage confirms a batch, the pruner deletes the matching WAL data. -In the produce flow, WAL segments are stored in object storage by the diskless coordinator -and stay there until `log.local.retention.ms` elapses, after which they are cleaned up. +The fetcher splits interleaved WAL files into per-partition local segments. The `RemoteLogManager` then tiers those segments to remote storage. -In the consolidation architecture, a fetcher-based component reads the oldest batches from -the diskless WAL (by order of insertion, to preserve ordering) and appends them to a -per-partition `UnifiedLog` via the `Partition` class. The `RemoteLogManager` then copies -those local segments to remote storage, exactly as it does for a classic tiered topic. Once -a batch is confirmed in remote storage, the corresponding WAL data is pruned. +The consolidation pipeline is a specialized replica-fetcher. It pulls from the diskless tier (object storage and the control plane) instead of from a leader broker. For the component breakdown, see [Implementation](#implementation). -Consolidation pipeline: interleaved WALs are split into per-partition local segments and tiered to remote storage +### Log continuity -The consolidation pipeline is implemented as a specialized replica-fetcher that pulls from -the diskless tier (object storage + control plane) instead of from a leader broker. See -[Implementation](#implementation) for the component breakdown. - -### Log Continuity - -In Kafka tiered storage, tiered and local offsets can overlap, as defined by KIP-405. The -separation between diskless and classic local offsets is similar: in the usual scenario -diskless offsets overlap local offsets, because the local log is treated as a cache, not as -persistent storage. +In Kafka tiered storage, tiered and local offsets can overlap, as KIP-405 defines. The split between diskless and classic local offsets is similar. Diskless offsets usually overlap local offsets because the local log is a cache, not persistent storage. ![Log continuity: diskless offsets overlap the local log](img/consolidation/log-continuity-1.png) -Depending on the cleanup schedule, diskless logs may totally overlap local logs and even -reach deeper into the tiered offset range. This happens when older segments contain data -which has not yet been migrated to remote storage, so it cannot be deleted. +Depending on the cleanup schedule, diskless logs may totally overlap local logs and even reach deeper into the tiered offset range. That happens when older segments still hold data that has not been migrated to remote storage, so the broker cannot delete it yet. ![Log continuity: diskless offsets overlap both local and tiered offsets](img/consolidation/log-continuity-2.png) -This is not a problem, because diskless segments are cleaned up periodically as they are -consolidated. The offset concepts in play are: - +That overlap is expected. The broker cleans up diskless segments periodically as it consolidates them. The offset concepts in play are: | Concept | Where it lives | Meaning | | --------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -| Log start offset | `UnifiedLog.logStartOffset` | The start of the whole (tiered + local) log. Advanced by RLM as remote segments are deleted. | +| Log start offset | `UnifiedLog.logStartOffset` | The start of the whole (tiered + local) log. The `RemoteLogManager` advances it as remote segments are deleted. | | Log end offset (LEO) | `UnifiedLog.logEndOffset` | The end of the local consolidated log. | | Local log start offset | `UnifiedLog.localLogStartOffset` | Used for local retention; decides which local segments to delete. | -| Local log end offset | `UnifiedLog.logEndOffset` | The consolidation frontier: offsets up to here have been materialized locally; the fetcher copies offsets above this from the diskless tier. | +| Local log end offset | `UnifiedLog.logEndOffset` | The consolidation frontier: offsets up to here have been materialized locally. The fetcher copies offsets above this from the diskless tier. | | Classic-to-diskless start offset (the *seal*) | `PartitionRegistration.classicToDisklessStartOffset` (KRaft metadata) | For a switched topic, the boundary between the classic prefix `[0, seal)` and the diskless region `[seal, LEO)`. Born-diskless topics have no seal. | -| Diskless WAL start | control plane `logs.log_start_offset` | The WAL prune frontier: the first surviving WAL record. Advanced by the pruner as batches are confirmed in remote storage. | -| Diskless end offset | the diskless LEO | The end of the diskless WAL; effectively the produce high-watermark. | +| Diskless WAL start | control plane `logs.log_start_offset` | The WAL prune frontier: the first surviving WAL record. The pruner advances it as batches are confirmed in remote storage. | +| Diskless end offset | the diskless LEO | The end of the diskless WAL; effectively the produce high watermark. | +### Read path +With consolidation, the broker can serve a consumer fetch from three sources: +- **Tiered offset space**: Classic log segments on remote storage (`[0, highestOffsetInRemoteStorage]`). +- **Diskless offset space**: WAL segments on remote storage. +- **WAL cache**: A local in-broker cache (a subset of the diskless offset space). -### Read Path +`ReplicaManager.fetchMessages` routes a consolidating partition as follows: -With consolidation, a consumer fetch may be served from three sources: +- If the fetch offset falls in the tiered range (below `localLogStartOffset`), the broker routes the request to the `RemoteLogManager`, as it does for any tiered topic. +- If the fetch offset is inside the local log, the broker reads the local log. If that read doesn't satisfy `minBytes`, the broker supplements with a synchronous diskless fetch starting at the local log end offset and merges the two through `ConcatenatedRecords.concat`. For the details, see [Consumer-side supplement](#consumer-side-supplement). The supplement avoids parking the consumer in the delayed-fetch purgatory at the local/diskless boundary when diskless data is already available. +- If the fetch offset is at or beyond the local log end offset, the broker serves the request from the diskless subsystem (cache or object storage). -- **Tiered offset space**: classic log segments on remote storage (`[0, highestOffsetInRemoteStorage]`). -- **Diskless offset space**: WAL segments on remote storage. -- **WAL cache**: a local in-broker cache (a subset of the diskless offset space). - -Routing for a consolidating partition, in `ReplicaManager.fetchMessages`: - -- If the fetch offset falls in the tiered range (below `localLogStartOffset`), the request -routes to the `RemoteLogManager`, as for any tiered topic. -- If the fetch offset is within the local log, the local log is read. If the local read does -not satisfy `minBytes`, the broker **supplements** with a synchronous diskless fetch -starting at the local log end offset and merges the two via `ConcatenatedRecords.concat` -(see [Consumer-side supplement](#consumer-side-supplement)). This avoids parking the -consumer in the delayed-fetch purgatory at the local/diskless boundary when diskless data -is already available. -- If the fetch offset is at or beyond the local log end offset, the request is served from -the diskless subsystem (cache or object storage). - -For all-consolidating requests the supplement is applied inline and the response is produced -immediately. For mixed requests (consolidating + pure-diskless) the supplement and the -diskless fetch run concurrently in `DelayedFetch.onComplete`, so the latency is the slower -of the two, not their sum. +If every partition in the request is consolidating, the broker applies the supplement inline and returns the response immediately. If the request mixes consolidating and pure-diskless partitions, the supplement and the diskless fetch run concurrently in `DelayedFetch.onComplete`, so latency is the slower of the two, not their sum. #### Consumer-side supplement @@ -154,114 +94,46 @@ consumer fetch (offset O, minBytes M) | yes +-- synchronous diskless fetch from localLEO +-- merge local ++ diskless via ConcatenatedRecords - +-- return (HW/LSO taken from the diskless supplement) + +-- return (high watermark and log start offset taken from the diskless supplement) | no (still inside local log, or error) +-- return local result ``` -The supplement starts where the local read left off (not at a fixed boundary), and only -fires once the local log is exhausted up to `localLEO`. Supplementing from below the seal -would stitch the local prefix directly onto the diskless range and silently drop the -committed range `[supplementStart, seal)`, so it is deliberately suppressed there. +The supplement starts where the local read left off, not at a fixed boundary, and it fires only after the local log is exhausted up to `localLEO`. Supplementing from below the seal would stitch the local prefix directly onto the diskless range and silently drop the committed range `[supplementStart, seal)`. The broker therefore suppresses the supplement there. -#### Reading from remote after the WAL is pruned +#### Remote reads after WAL prune -Once a batch is consolidated to remote and the WAL is pruned, the data below the diskless -WAL start lives *only* in the remote tier. If a fetch (e.g. after local-log loss, or a -follower catching up) targets an offset in `[logStartOffset, disklessWALStart)`, -`DisklessLeaderEndPoint.fetch` signals `OFFSET_MOVED_TO_TIERED_STORAGE` (clearing the -records). The stock Kafka tier-state machine then rebuilds the leader-epoch cache and -producer snapshot from remote before resuming the WAL fetch. +After a batch is consolidated to remote storage and the WAL is pruned, data below the diskless WAL start lives only in the remote tier. If a fetch targets an offset in `[logStartOffset, disklessWALStart)` — for example after local-log loss, or a follower catching up — `DisklessLeaderEndPoint.fetch` signals `OFFSET_MOVED_TO_TIERED_STORAGE` and clears the records. The stock Kafka tier-state machine then rebuilds the leader-epoch cache and producer snapshot from remote storage before it resumes the WAL fetch. -This is the core read-from-remote path for consolidated topics: it is what makes a -consolidated topic survive losing every local copy. +This is the read-from-remote path that lets a consolidated topic survive losing every local copy. #### Followers -Followers must never replicate diskless records into their local log. When a partition has -fully switched and a follower fetches at or beyond the seal, `fetchMessages` returns an -empty response with the high watermark clamped to the seal, so the classic fetcher loop -sees the partition as caught up and goes idle. The follower keeps its classic local prefix -intact and can still serve consumer reads from it. The consolidation fetcher (below) is the -component that materializes the diskless region into the local log; it runs on managed -replicas only. +Followers must never replicate diskless records into their local log. When a partition has fully switched and a follower fetches at or beyond the seal, `fetchMessages` returns an empty response with the high watermark clamped to the seal. The classic fetcher loop then sees the partition as caught up and goes idle. The follower keeps its classic local prefix intact and can still serve consumer reads from it. The consolidation fetcher described in [Implementation](#implementation) is the component that materializes the diskless region into the local log. It runs on managed replicas only. ### Cross-tier log start offset -A born-consolidated topic's earliest readable offset eventually lives only in the remote -tier: the diskless WAL is pruned and local segments are evicted, yet `ListOffsets(EARLIEST)` -must still point at real data. When `retention.ms` expires the oldest remote segments, only -the partition's classic leader observes the earliest offset advancing: its -`RemoteLogManager` raises `UnifiedLog.logStartOffset` as it deletes them. That value is -broker-local: followers fetch from the diskless WAL and never learn it, and the control -plane's `log_start_offset` tracks only the WAL prune frontier, not the remote-retention -frontier. Without this feature, `ListOffsets(EARLIEST_TIMESTAMP)` (`--time -2`) served by -any non-leader broker returned a stale `0`, pointing consumers at data that no longer -exists. `EARLIEST_LOCAL_TIMESTAMP` (`--time -4`) is intentionally unaffected; it must keep -returning the diskless WAL log start. - -The leader is the only participant that *knows* the cross-tier earliest offset, but any -broker must be able to *serve* it. The design makes the **control plane the source of -truth**, with a short-TTL cache: - -- **Write path (leader).** `CrossTierLogStartReporter` buffers per-partition updates, drops - non-advancing ones, coalesces, and flushes to the control plane once a second - (write-through to the cache on success). It is triggered from the RLM callback in - `BrokerServer`/`ReplicaManager` on the leader, and is a no-op for non-consolidating/classic - topics and for strictly negative offsets. `0` is meaningful and *is* reported: it is the - cross-tier earliest of a freshly-tiered born-consolidated topic whose WAL prune frontier - has advanced above it. -- **Read path (any broker).** `FetchOffsetHandler` serves `EARLIEST` on a consolidating - diskless topic read-through the `CrossTierLogStartCache` first; on a miss it queries the - control plane and populates the cache. `DisklessFetchOffsetRouter` routes `EARLIEST` for - **every** consolidating partition (born-consolidated and switched alike) to this - control-plane leg — never to the broker-local classic log. This is required for - correctness under managed replicas: `InklessTopicMetadataTransformer` advertises a - hash-selected replica (usually a *follower*) as the partition leader, and a follower's - local classic log start is frozen at the switch, so serving `EARLIEST` from it would pin - the client-visible earliest at a stale value (e.g. `0` after a `DeleteRecords` the follower - never applied). The control-plane value is broker-agnostic, so every broker returns the - same cross-tier earliest. (Non-consolidating switched partitions keep serving `EARLIEST` - from the classic leg while it still owns the pre-switch prefix.) -- **Whole-log start & reclaim floor (leader).** The same control-plane value is the - authoritative whole-log start / remote-retention reclaim floor for a consolidating - partition, *not* the broker-local `UnifiedLog.logStartOffset`. On a freshly-elected leader - whose classic prefix was already evicted, the leadership rebuild pins the local log start at - the seal (and it can only ever increment), so using it would over-reclaim the remote classic - prefix `[earliest, seal)` and reject reads of it as out-of-range. Instead - `DisklessLeaderEndPoint` reports `min(X, localLogStart)` as the whole-log start (so a read of - the surviving prefix redirects to the remote tier and the tier-state rebuild restarts at `X`), - and `RemoteLogManager` uses `X` as the log-start-breach reclaim floor and the become-leader - report — both via `ReplicaManager.crossTierEarliestOffset` (`X` = - `COALESCE(remote_log_start_offset, log_start_offset)`). This runs on the RLM leader, which - under managed replicas differs from the broker that served a `DeleteRecords`, so a - broker-agnostic source is mandatory. -- **Cache.** Caffeine-backed with a TTL and a monotonic `put` (a `Null` implementation - disables it); owned by `SharedState`. A stale entry can only ever be *too low* (the safe direction), so it only delays when a retention advance becomes visible off-leader. -- **Storage.** The value is kept in `logs.remote_log_start_offset` (migration `V16`), - advanced only forward via `advance_cross_tier_log_start_offset_v1`. `list_offsets_v1` - (migration `V17`) returns it for `EARLIEST`, while `EARLIEST_LOCAL` keeps returning - `log_start_offset`. - -Write pressure is negligible: remote retention advances rarely (per RLM expiration cycle), -updates are coalesced per partition and flushed once a second, and only strictly-advancing -values are sent. - -The configuration and JMX metrics for this feature are listed in -[Configuration](#configuration) and [Metrics](#metrics). System tests that -exercise this path are described under [Testing](#testing). +On a born-consolidated topic, the earliest readable offset eventually lives only in the remote tier: the diskless WAL is pruned and local segments are evicted, yet `ListOffsets(EARLIEST)` must still point at real data. When `retention.ms` expires the oldest remote segments, only the partition's classic leader observes the earliest offset advancing. Its `RemoteLogManager` raises `UnifiedLog.logStartOffset` as it deletes them. That value is broker-local. Followers fetch from the diskless WAL and never learn it, and the control plane's `log_start_offset` tracks only the WAL prune frontier, not the remote-retention frontier. -## Implementation +Without this feature, `ListOffsets(EARLIEST_TIMESTAMP)` (`--time -2`) served by any non-leader broker returned a stale `0`, pointing consumers at data that no longer exists. `EARLIEST_LOCAL_TIMESTAMP` (`--time -4`) is intentionally unaffected: it must keep returning the diskless WAL log start. -The chosen design reuses the replica-fetcher machinery with a custom `LeaderEndPoint` that -fetches from the diskless tier instead of from a leader broker. This maximizes reuse of -battle-tested components (`UnifiedLog`, `RemoteLogManager`, `AbstractFetcherThread`) while -keeping the diskless-specific logic isolated. +The leader is the only participant that knows the cross-tier earliest offset, but any broker must be able to serve it. The control plane is the source of truth, with a short-TTL cache: -Consolidation component architecture +- **Write path (leader).** `CrossTierLogStartReporter` buffers per-partition updates, drops non-advancing ones, coalesces, and flushes to the control plane once a second. On success it writes through to the cache. The `RemoteLogManager` callback in `BrokerServer`/`ReplicaManager` triggers it on the leader. It is a no-op for non-consolidating and classic topics, and for strictly negative offsets. `0` is meaningful and is reported: it is the cross-tier earliest of a freshly-tiered born-consolidated topic whose WAL prune frontier has advanced above it. +- **Read path (any broker).** `FetchOffsetHandler` serves `EARLIEST` on a consolidating diskless topic through the `CrossTierLogStartCache` first. On a miss it queries the control plane and populates the cache. `DisklessFetchOffsetRouter` routes `EARLIEST` for every consolidating partition (born-consolidated and switched alike) to this control-plane leg, never to the broker-local classic log. That routing is required under managed replicas. `InklessTopicMetadataTransformer` advertises a hash-selected replica (usually a follower) as the partition leader, and a follower's local classic log start is frozen at the switch. Serving `EARLIEST` from that local start would pin the client-visible earliest at a stale value, for example `0` after a `DeleteRecords` the follower never applied. The control-plane value is broker-agnostic, so every broker returns the same cross-tier earliest. Non-consolidating switched partitions keep serving `EARLIEST` from the classic leg while it still owns the pre-switch prefix. +- **Whole-log start and reclaim floor (leader).** The same control-plane value is the authoritative whole-log start and remote-retention reclaim floor for a consolidating partition, not the broker-local `UnifiedLog.logStartOffset`. On a freshly-elected leader whose classic prefix was already evicted, the leadership rebuild pins the local log start at the seal, and that start can only increment. Using it would over-reclaim the remote classic prefix `[earliest, seal)` and reject reads of that prefix as out-of-range. `DisklessLeaderEndPoint` therefore reports `min(X, localLogStart)` as the whole-log start, so a read of the surviving prefix redirects to the remote tier and the tier-state rebuild restarts at `X`. `RemoteLogManager` uses `X` as the log-start-breach reclaim floor and the become-leader report. Both go through `ReplicaManager.crossTierEarliestOffset`, where `X` is `COALESCE(remote_log_start_offset, log_start_offset)`. This runs on the `RemoteLogManager` leader, which under managed replicas differs from the broker that served a `DeleteRecords`, so a broker-agnostic source is mandatory. +- **Cache.** Caffeine-backed with a TTL and a monotonic `put` (a `Null` implementation disables it); owned by `SharedState`. A stale entry can only ever be too low (the safe direction), so it only delays when a retention advance becomes visible off-leader. +- **Storage.** The value is kept in `logs.remote_log_start_offset` (migration `V16`), advanced only forward via `advance_cross_tier_log_start_offset_v1`. `list_offsets_v1` (migration `V17`) returns it for `EARLIEST`, while `EARLIEST_LOCAL` keeps returning `log_start_offset`. -### Components +Write pressure is negligible. Remote retention advances rarely (per `RemoteLogManager` expiration cycle). Updates are coalesced per partition and flushed once a second, and only strictly-advancing values are sent. + +For configuration and JMX metrics, see [Configuration](#configuration) and [Metrics](#metrics). For system tests that exercise this path, see [Testing](#testing). +## Implementation + +The design reuses the replica-fetcher machinery with a custom `LeaderEndPoint` that fetches from the diskless tier instead of from a leader broker. That reuses `UnifiedLog`, `RemoteLogManager`, and `AbstractFetcherThread`, and it keeps the diskless-specific logic isolated. + +### Components | Component | Role | | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -272,15 +144,11 @@ Consolidation component architecture | `ConsolidatedDisklessLogPruner` | Scheduled job that prunes WAL batches once they are confirmed in remote storage. | | `ConsolidationMetrics` | Per-partition and broker-aggregate lag gauges. | - -All of these are wired into `ReplicaManager` and are only instantiated when -`diskless.remote.storage.consolidation.enable=true`. +`ReplicaManager` wires these components and instantiates them only when `diskless.remote.storage.consolidation.enable=true`. ### Sequence -Consolidation sequence: ReplicaManager arms a fetcher, which pulls batches from the diskless tier, appends to UnifiedLog, and lets RLM tier + the pruner reclaim the WAL - -**Current implementation** — adds a reconciler gate, diskless leader epoch `E_d`, the `OFFSET_MOVED_TO_TIERED_STORAGE` recovery path, cold-path reads with a dedicated quota, and moves WAL pruning out of RLM into a scheduled `ConsolidatedDisklessLogPruner`. +The implementation adds a reconciler gate, the diskless leader epoch `E_d`, the `OFFSET_MOVED_TO_TIERED_STORAGE` recovery path, and cold-path reads with a dedicated quota. It moves WAL pruning out of the `RemoteLogManager` into a scheduled `ConsolidatedDisklessLogPruner`. ```mermaid sequenceDiagram @@ -339,7 +207,7 @@ sequenceDiagram end rect rgba(255, 255, 255, 0) - note over PRUNER,RS: WAL prune - scheduled, every inkless.consolidation.cleanup.interval.ms + note over PRUNER,RS: WAL prune: scheduled, every inkless.consolidation.cleanup.interval.ms PRUNER->>UL: read highestOffsetInRemoteStorage PRUNER->>PRUNER: safe prune offset = getSafeConsolidatedDisklessPruneOffset
    (floor >= max(seal, logStartOffset)) PRUNER->>CP: prune_batches_below_highest_tiered_offset_v1 @@ -351,29 +219,16 @@ sequenceDiagram note over UL: Local segments are reclaimed by standard local retention (local.retention.* via localLogStartOffset), not by consolidation.
    Cross-tier earliest offset and consumer-side supplement are covered in their own sections. ``` -1. On `applyDelta()` in `ReplicaManager`, a partition change kicks off the process. - `ReplicaManager` creates `Partition`s and `UnifiedLog`s for diskless partitions where - both `diskless.enable=true` and `remote.storage.enable=true`, and the - `ConsolidationReconciler` decides whether to arm a consolidation fetcher for each. -2. Once armed, the partition is assigned to a `ConsolidationFetcherThread`. The thread's - `leader` is a `DisklessLeaderEndPoint`. The fetch loop is the standard - `maybeTruncate()` → `maybeFetch()`: - - `buildFetch()` constructs fetch requests for each partition it fetches. - - `fetch()` calls the `FetchHandler`, which resolves batch coordinates (from the - coordinate cache or the control plane) and batch data (from the caffeine cache or - object storage, via the cold path; see [Cache pollution](#cache-pollution-cold-path)). - - The returned records are appended to the local `UnifiedLog`. -3. The `RemoteLogManager` asynchronously copies closed local segments to remote storage, - updates `highestOffsetInRemoteStorage` on the `UnifiedLog`, and the - `ConsolidatedDisklessLogPruner` marks the now-tiered WAL batches for deletion in the - control plane, advancing the diskless WAL start. - +1. On `applyDelta()` in `ReplicaManager`, a partition change starts the process. `ReplicaManager` creates `Partition` objects and `UnifiedLog` objects for diskless partitions where both `diskless.enable=true` and `remote.storage.enable=true`. The `ConsolidationReconciler` decides whether to arm a consolidation fetcher for each. +2. Once armed, the partition is assigned to a `ConsolidationFetcherThread`. The thread's `leader` is a `DisklessLeaderEndPoint`. The fetch loop is the standard `maybeTruncate()` then `maybeFetch()`: + - `buildFetch()` constructs fetch requests for each partition it fetches. + - `fetch()` calls the `FetchHandler`, which resolves batch coordinates (from the coordinate cache or the control plane) and batch data (from the Caffeine cache or object storage, via the cold path; see [Cache pollution](#cache-pollution-cold-path)). + - The thread appends the returned records to the local `UnifiedLog`. +3. The `RemoteLogManager` asynchronously copies closed local segments to remote storage and updates `highestOffsetInRemoteStorage` on the `UnifiedLog`. The `ConsolidatedDisklessLogPruner` then marks the now-tiered WAL batches for deletion in the control plane, advancing the diskless WAL start. +### `ConsolidationReconciler` state machine -### ConsolidationReconciler state machine - -The reconciler runs per partition before a fetcher is armed. It enforces the -`diskless.enable ⟹ remote.storage.enable` invariant and handles the seal boundary. +The reconciler runs per partition before a fetcher is armed. It enforces the `diskless.enable ⟹ remote.storage.enable` invariant and handles the seal boundary. ```mermaid flowchart TD @@ -389,82 +244,38 @@ flowchart TD failed --> fenced[Partition stays online for reads/writes\nFailed flag clears on next leader-epoch change] ``` +A `Failed` partition stays online and remains readable and writable. Consolidation doesn't run, so the local log doesn't grow unbounded into an untiered diskless log. `FailedPartitionsCount` and the controller-side `DisklessWithoutRemoteStorageCount` metric surface the state to operators. If the failure is an invariant violation, set `remote.storage.enable=true` and trigger a leader-epoch change (restart, reassignment, or preferred-leader election) so reconciliation runs again. +### Diskless leader epoch for truncation -A `Failed` partition is **not** taken offline (it stays readable/writable), but -consolidation does not run, so the local log will not grow unbounded into an untiered diskless -log. `FailedPartitionsCount` and the controller-side `DisklessWithoutRemoteStorageCount` -metric surface the state to operators. Recovery for the invariant-violation case is to set -`remote.storage.enable=true` and trigger a leader-epoch change (restart, reassignment, or -preferred-leader election) so reconciliation re-runs. - -### Diskless leader epoch (E_d) for truncation - -Diskless records are produced with leader epoch 0. Appending them after a switched -partition's classic prefix (which carries higher classic epochs) would break -`LeaderEpochFileCache` monotonicity and disable `OffsetsForLeaderEpoch` divergence -truncation. - -To fix this, the controller captures a frozen **diskless leader epoch** `E_d` at the -`initDisklessLog` commit and persists it in KRaft metadata as a tagged field on -`PartitionRegistration`. Then: - -- `ConsolidationFetcherThread.maybeStampDisklessLeaderEpoch` stamps `E_d` onto each -materialized batch in place (the partition leader epoch is outside the batch CRC, so no -checksum recompute is needed). Born-diskless partitions with no `E_d` are left at epoch 0. -- `DisklessLeaderEndPoint.fetchEpochEndOffsets` answers `OffsetsForLeaderEpoch` for -followers: - - a queried epoch **below** `E_d` returns the **seal** (so a stale classic tail past the - seal truncates back to it; collapsing every classic epoch to the seal is correct - because the classic prefix `[0, seal)` is committed and identical across replicas); - - a queried epoch **at or above** `E_d` (or a born-diskless partition with no `E_d`) - returns the current diskless LEO. +Diskless records are produced with leader epoch 0. Appending them after a switched partition's classic prefix (which carries higher classic epochs) would break `LeaderEpochFileCache` monotonicity and disable `OffsetsForLeaderEpoch` divergence truncation. -`DisklessLeaderEndPoint.resolveLeaderEpoch` applies the same region logic to list-offsets -results, because `FetchOffsetHandler` stamps a placeholder epoch of 0 that cannot be -trusted. +The controller captures a frozen diskless leader epoch `E_d` at the `initDisklessLog` commit and persists it in KRaft metadata as a tagged field on `PartitionRegistration`. Then: -> **Upgrade caveat.** Partitions switched before this change carry a seal but no `E_d`, so -> they fall through to the LATEST-LEO branch and keep the pre-divergence-truncation -> behavior until they are re-switched. This is a safe fallback, not a correctness -> regression. +- `ConsolidationFetcherThread.maybeStampDisklessLeaderEpoch` stamps `E_d` onto each materialized batch in place (the partition leader epoch is outside the batch CRC, so no checksum recompute is needed). Born-diskless partitions with no `E_d` are left at epoch 0. +- `DisklessLeaderEndPoint.fetchEpochEndOffsets` answers `OffsetsForLeaderEpoch` for followers: + - A queried epoch below `E_d` returns the seal, so a stale classic tail past the seal truncates back to it. Collapsing every classic epoch to the seal is correct because the classic prefix `[0, seal)` is committed and identical across replicas. + - A queried epoch at or above `E_d` (or a born-diskless partition with no `E_d`) returns the current diskless LEO. +`DisklessLeaderEndPoint.resolveLeaderEpoch` applies the same region logic to list-offsets results, because `FetchOffsetHandler` stamps a placeholder epoch of 0 that cannot be trusted. +> **Upgrade caveat.** Partitions switched before this change carry a seal but no `E_d`, so they fall through to the LATEST-LEO branch and keep the pre-divergence-truncation behavior until they are re-switched. This is a safe fallback, not a correctness regression. ### Cache pollution: cold path -Consolidation reads data that consumers will likely never touch. Routing those reads -through the same hot path as consumer fetches would pull WAL data into the caffeine -`ObjectCache` and evict useful entries. - -The mitigation that shipped is **cold-path routing** (KC-171), not OS-level page-cache -tricks. The consolidation `Reader` fetches old (lagging) data via `backgroundStorage`, -bypassing the `ObjectCache`, while recent data still uses the cache for hits on -producer/consumer-cached ranges. The cold path reuses the consolidation data thread pool -(no separate pool is allocated) and can be rate-limited as a safety valve via -`diskless.consolidation.fetch.lagging.request.rate.limit`. - -> The original design also considered direct I/O, `posix_fadvise(DONTNEED)`, memory-mapped -> files, and broker separation. None of these OS-level mitigations were implemented; the -> cold-path approach avoids polluting the *Inkless object cache* (the directly contended -> resource) without modifying Kafka's I/O layer. +Consolidation reads data that consumers will likely never touch. Routing those reads through the same hot path as consumer fetches would pull WAL data into the Caffeine `ObjectCache` and evict useful entries. +The mitigation is cold-path routing (KC-171), not OS-level page-cache workarounds. The consolidation `Reader` fetches old (lagging) data through `backgroundStorage`, bypassing the `ObjectCache`. Recent data still uses the cache for hits on producer-cached and consumer-cached ranges. The cold path reuses the consolidation data thread pool; it doesn't allocate a separate pool. You can rate-limit it as a safety valve with `diskless.consolidation.fetch.lagging.request.rate.limit`. +> The original design also considered direct I/O, `posix_fadvise(DONTNEED)`, memory-mapped files, and broker separation. None of those OS-level mitigations were implemented. The cold-path approach avoids polluting the Inkless object cache, which is the directly contended resource, without modifying Kafka's I/O layer. ### Fetch quota -Consolidation reads from object storage are decoupled from inter-broker replication -throttling by a dedicated `ReplicationQuotaManager` (`DisklessConsolidationFetch` quota -type), configured by `diskless.consolidation.fetch.rate.limit.bytes.per.second`. This is a -**dynamic** broker config (set to 0 to pause all consolidation fetches, -`Long.MAX_VALUE` to disable). The reconciler marks consolidating topics throttled when it -arms their fetchers, so bytes are recorded to the quota sensor. - -## Retention and Expiration +Consolidation reads from object storage use a dedicated `ReplicationQuotaManager` (`DisklessConsolidationFetch` quota type), so they aren't mixed into inter-broker replication throttling. `diskless.consolidation.fetch.rate.limit.bytes.per.second` configures it. This is a dynamic broker config. Set it to `0` to pause all consolidation fetches. Set it to `Long.MAX_VALUE` to disable the limit. The reconciler marks consolidating topics throttled when it arms their fetchers, so bytes are recorded to the quota sensor. -Cleanup is asynchronous. Retention time and size configs for diskless topics are the same -as Kafka, except for the retention check interval: +## Retention and expiration +Cleanup is asynchronous. Retention time and size configs for diskless topics match Kafka, except for the retention check interval: | | Config | | -------------------------- | ---------------------------------------------------------- | @@ -474,194 +285,102 @@ as Kafka, except for the retention check interval: | Retention size (local log) | `local.retention.bytes`, `log.local.retention.bytes` | | WAL prune interval | `inkless.consolidation.cleanup.interval.ms` | - -With remote logs in play, `retention.ms`/`retention.bytes` are the **whole-log** expiration -(local + remote), consistent with classic tiered topics. `local.retention.*` keep their -existing meaning for the local portion. +When remote logs are in play, `retention.ms` and `retention.bytes` are the whole-log expiration (local plus remote), consistent with classic tiered topics. `local.retention.*` keep their existing meaning for the local portion. ![Retention: tiered [0,249], local [250,299], diskless [240,350]. Diskless overlaps both](img/consolidation/retention.png) ### WAL pruning -`ConsolidatedDisklessLogPruner` runs on each broker at `inkless.consolidation.cleanup.interval.ms` -(default 5 minutes). For each consolidating partition that is not in `SWITCH_PENDING`: - -1. It reads `highestOffsetInRemoteStorage` from the `UnifiedLog` (skips if negative: remote - not active yet). -2. It computes a **safe prune offset**: for born-diskless topics that is - `highestOffsetInRemoteStorage`; for switched topics it is - `partition.getSafeConsolidatedDisklessPruneOffset(...)`, which never prunes below the - seal or the partition's consolidation prune floor. -3. It submits a batch prune request to the control plane - (`prune_batches_below_highest_tiered_offset_v1`), which deletes WAL batches with - `last_offset <= highestOffsetInRemoteStorage` and advances `logs.log_start_offset`. -4. On success, the partition's consolidation prune floor is advanced - (`maybeAdvanceConsolidationPruneFloor`). - -The reconciler sets the prune floor to at least `max(seal, logStartOffset)` when it arms -consolidation (`ensureConsolidationPruneFloorAtLeast`), so a switched partition's classic -prefix is never pruned from the WAL before it is safely in remote. +`ConsolidatedDisklessLogPruner` runs on each broker at `inkless.consolidation.cleanup.interval.ms` (default 5 minutes). For each consolidating partition that is not in `SWITCH_PENDING`: -### Eliminating WAL segments +1. It reads `highestOffsetInRemoteStorage` from the `UnifiedLog` (skips if negative: remote storage is not active yet). +2. It computes a safe prune offset: for born-diskless topics that is `highestOffsetInRemoteStorage`; for switched topics it is `partition.getSafeConsolidatedDisklessPruneOffset(...)`, which never prunes below the seal or the partition's consolidation prune floor. +3. It submits a batch prune request to the control plane (`prune_batches_below_highest_tiered_offset_v1`). The control plane deletes WAL batches with `last_offset <= highestOffsetInRemoteStorage` and advances `logs.log_start_offset`. +4. On success, the partition's consolidation prune floor is advanced (`maybeAdvanceConsolidationPruneFloor`). -- Batches that belong to a consolidating topic are deleted from the control plane once -their `last_offset <= highestOffsetInRemoteStorage`. -- Files that become empty (no remaining batch metadata) are removed by the existing -`mark_file_to_delete_v1` / file-cleaner path. +The reconciler sets the prune floor to at least `max(seal, logStartOffset)` when it arms consolidation (`ensureConsolidationPruneFloorAtLeast`), so a switched partition's classic prefix is never pruned from the WAL before it is safely in remote storage. +### WAL segment deletion +- The control plane deletes batches that belong to a consolidating topic once their `last_offset <= highestOffsetInRemoteStorage`. +- The existing `mark_file_to_delete_v1` / file-cleaner path removes files that become empty (no remaining batch metadata). ## Reassignment -Because all data is in object storage, reassignment uses the target replicas directly -(rather than a merged original + adding list). A consolidating partition that moves to a -new broker resumes consolidation from object storage: the reconciler arms the fetcher at -the current LEO, the fetcher drains the diskless WAL into the local log, and RLM tiers it. -`InklessConsolidatedDisklessReassignmentTest` covers this end-to-end. When a replica is -removed, its local log is cleaned up via the normal stop-replica path. +Because all data is in object storage, reassignment uses the target replicas directly, not a merged original-plus-adding list. When a consolidating partition moves to a new broker, consolidation resumes from object storage: the reconciler arms the fetcher at the current LEO, the fetcher drains the diskless WAL into the local log, and the `RemoteLogManager` tiers it. `InklessConsolidatedDisklessReassignmentTest` covers this end-to-end. When a replica is removed, the broker cleans up its local log on the normal stop-replica path. ## Configuration -Broker-level configs live in `ServerConfigs` (no prefix) and `InklessConfig` (under the -`inkless.` prefix). The auto-generated reference is in [configs.rst](configs.rst). +Broker-level configs live in `ServerConfigs` (no prefix) and `InklessConfig` (under the `inkless.` prefix). The auto-generated reference is in [configs.rst](configs.rst). ### Feature flag and dependencies - | Config | Default | Meaning | | ---------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `diskless.remote.storage.consolidation.enable` | `false` | Enables the consolidation framework. Requires `diskless.allow.from.classic.enable=true`, `diskless.managed.rf.enable=true`, and `remote.log.storage.system.enable=true`. | - -Per topic, consolidation runs when `diskless.enable=true` **and** -`remote.storage.enable=true`. The classic-to-diskless switch sets both atomically; a -born-consolidated topic is created with both. +Per topic, consolidation runs when `diskless.enable=true` and `remote.storage.enable=true`. The classic-to-diskless switch sets both atomically. A born-consolidated topic is created with both. ### Consolidation fetcher tuning - | Config | Default | Meaning | | ------------------------------------------------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | `diskless.consolidation.num.fetchers` | `1` | Number of consolidation fetcher threads (parallelism, independent of `num.replica.fetchers`). | -| `diskless.consolidation.fetch.max.bytes` | `10 MiB` | Max bytes per partition per fetch iteration. Larger values reduce control-plane query frequency. | -| `diskless.consolidation.fetch.response.max.bytes` | `10 MiB` | Max total bytes accepted across all partitions in one fetch response. | -| `diskless.consolidation.fetch.min.bytes` | `1` | Min bytes to wait for before returning. | -| `diskless.consolidation.fetch.max.wait.ms` | `1000` | Max time to wait for `minBytes` when there is little new data. | +| `diskless.consolidation.fetch.max.bytes` | `10 MiB` | Max bytes per partition per fetch iteration. Larger values reduce control-plane query frequency. | +| `diskless.consolidation.fetch.response.max.bytes` | `64 MiB` | Max total bytes accepted across all partitions in one fetch response. | +| `diskless.consolidation.fetch.min.bytes` | `8 MiB` | Min bytes to wait for before returning. | +| `diskless.consolidation.fetch.max.wait.ms` | `1000` | Max time to wait for `minBytes` when there is little new data. | | `diskless.consolidation.fetch.metadata.thread.pool.size` | `4` | Thread pool for control-plane (batch coordinate) queries. | | `diskless.consolidation.fetch.data.thread.pool.size` | `8` | Thread pool for object-storage data fetches (also reused by the cold path). | | `diskless.consolidation.fetch.find.batches.max.per.partition` | `0` (unlimited) | Max batch coordinates returned per partition per control-plane query. Larger values improve the coordinate cache hit rate. | -| `diskless.consolidation.fetch.rate.limit.bytes.per.second` | `Long.MAX_VALUE` (disabled) | Max object-storage read bandwidth for consolidation across all fetcher threads. **Dynamic**; `0` pauses consolidation. | +| `diskless.consolidation.fetch.rate.limit.bytes.per.second` | `Long.MAX_VALUE` (disabled) | Max object-storage read bandwidth for consolidation across all fetcher threads. Dynamic; `0` pauses consolidation. | | `diskless.consolidation.fetch.lagging.request.rate.limit` | `0` (unlimited) | Max cold-path request rate (requests/sec) as a safety valve. | | `inkless.consolidation.cleanup.interval.ms` | `300000` (5 min) | How often the WAL pruner runs on each broker. | +### Cross-tier log start offset - - -### Cross-tier log start offset (config) - - -| Config | Default | Meaning | -| ---------------------------------------------------- | ------- | --------------------------------------------------------------------------------------- | -| `inkless.consume.cross.tier.log.start.cache.enabled` | `true` | Enable the read-/write-through cross-tier earliest-offset cache. | -| `inkless.consume.cross.tier.log.start.cache.ttl.ms` | `10000` | Per-entry TTL; bounds how quickly a retention advance becomes visible off-leader. | +| Config | Default | Meaning | +| ---------------------------------------------------- | ------- | --------------------------------------------------------------------------------- | +| `inkless.consume.cross.tier.log.start.cache.enabled` | `true` | Enable the read-/write-through cross-tier earliest-offset cache. | +| `inkless.consume.cross.tier.log.start.cache.ttl.ms` | `10000` | Per-entry TTL; bounds how quickly a retention advance becomes visible off-leader. | | `inkless.cross.tier.log.start.report.interval.ms` | `1000` | How often the leader flushes its observed remote log start offset to the control plane. | - - - ## Metrics -Registered under the `io.aiven.inkless.consolidation` group. The auto-generated reference -is in [metrics.rst](metrics.rst). - +The broker registers these under the `io.aiven.inkless.consolidation` group. The auto-generated reference is in [metrics.rst](metrics.rst). | MBean | Attribute | Meaning | | --------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `io.aiven.inkless.consolidation:type=ConsolidationMetrics` | `ConsolidationTotalLag` | `disklessLEO - remoteLogEndOffset` (full pipeline: diskless → remote). Broker aggregate; per-partition gauges tagged with `topic`/`partition`. Only updated when remote storage is active. | -| | `ConsolidationLocalLag` | `disklessLEO - localLogEndOffset` (first hop: diskless → local). | +| `io.aiven.inkless.consolidation:type=ConsolidationMetrics` | `ConsolidationTotalLag` | `disklessLEO - remoteLogEndOffset` (full pipeline: diskless to remote). Broker aggregate; per-partition gauges tagged with `topic`/`partition`. Only updated when remote storage is active. | +| | `ConsolidationLocalLag` | `disklessLEO - localLogEndOffset` (first hop: diskless to local). | | | `ConsolidationDeletableMessages` | Messages already in remote storage, eligible for WAL pruning (`remoteLogEndOffset - localLogStartOffset`). | | `io.aiven.inkless.consolidation:type=ConsolidationFetchMetrics` | `RecentDataRequestRate` / `LaggingConsumerRequestRate` | Hot-path (cache-hit) vs cold-path (object-storage) consolidation fetch rates. | | `io.aiven.inkless.delete:type=CrossTierLogStartReporter` | `PartitionsReported` / `ReportErrors` / `PendingPartitions` | Cross-tier log start offset reporting to the control plane. | | `io.aiven.inkless.cache:type=CrossTierLogStartCache` | `CacheHits` / `CacheMisses` / `CacheSize` | Cross-tier earliest-offset cache. | | controller | `DisklessWithoutRemoteStorageCount` | Switched topics with remote storage off (invariant violation; surfaces `Failed` reconciler state). | - - - ## Compatibility -- **Produce / consume / replication**: standard Kafka client APIs; a consolidated topic -behaves like a tiered topic for clients. -- **ListOffsets**: `EARLIEST` returns the cross-tier earliest offset (remote + local); -`EARLIEST_LOCAL` returns the diskless WAL log start; `LATEST` works as usual. -- **OffsetsForLeaderEpoch**: supported for switched partitions via the diskless leader -epoch `E_d` mapping (epochs below `E_d` map to the seal; `E_d` and above map to the -diskless LEO). This enables follower divergence truncation. -- **DeleteRecords**: supported for hybrid (switched) partitions. - - *Known limitation (authorization).* When an authorizer is enabled, `DeleteRecords` on a - switched/consolidating partition requires the broker's inter-broker principal to be - granted `DELETE` on the topic. `InklessTopicMetadataTransformer` advertises a hash-selected - replica (usually a follower) as the client-facing leader, so the admin request rarely reaches - the real KRaft leader directly; the receiving broker forwards the leader-only leg to it over - the inter-broker listener (`DisklessDeleteRecordsForwarder`) as a plain `DeleteRecords`, which - the leader authorizes against the *forwarding broker's* principal, not the original client's. - If the broker principal lacks `DELETE` on the topic, the forwarded leg is rejected with - `TOPIC_AUTHORIZATION_FAILED` and the operation fails. Deployments where the inter-broker - principal is a super-user (the common case) are unaffected. This is accepted for now. The - proper fix, which is wrapping the forwarded request in a KIP-590 envelope so the leader - re-authorizes against the original client principal is complex. It requires API changes: - enabling the `Envelope` request on the broker inter-broker listener, which today accepts it - only on the controller listener, plus a broker-side envelope handler, so it is deferred for - now. -- **Transactions**: transactional offset commits are allowed for diskless sources. Abort -markers are preserved for the local portion of a consolidating partition; transactions -spanning the consolidation boundary into the diskless portion are not supported (a -warning is logged and those offsets have no abort markers). -- **Unclean leader election**: disabled on classic-to-diskless switch (KC-129). +- **Produce / consume / replication**: Standard Kafka client APIs. A consolidated topic behaves like a tiered topic for clients. +- **ListOffsets**: `EARLIEST` returns the cross-tier earliest offset (remote + local). `EARLIEST_LOCAL` returns the diskless WAL log start. `LATEST` works as usual. +- **OffsetsForLeaderEpoch**: Supported for switched partitions via the diskless leader epoch `E_d` mapping (epochs below `E_d` map to the seal; `E_d` and above map to the diskless LEO). This enables follower divergence truncation. +- **DeleteRecords**: Supported for hybrid (switched) partitions. + - *Known limitation (authorization).* When an authorizer is enabled, `DeleteRecords` on a switched or consolidating partition requires the broker's inter-broker principal to be granted `DELETE` on the topic. `InklessTopicMetadataTransformer` advertises a hash-selected replica (usually a follower) as the client-facing leader, so the admin request rarely reaches the real KRaft leader directly. The receiving broker forwards the leader-only leg to it over the inter-broker listener (`DisklessDeleteRecordsForwarder`) as a plain `DeleteRecords`, which the leader authorizes against the forwarding broker's principal, not the original client's. If the broker principal lacks `DELETE` on the topic, the forwarded leg is rejected with `TOPIC_AUTHORIZATION_FAILED` and the operation fails. Deployments where the inter-broker principal is a super-user (the common case) are unaffected. This is accepted for now. The proper fix is wrapping the forwarded request in a KIP-590 envelope so the leader re-authorizes against the original client principal. That requires API changes: enabling the `Envelope` request on the broker inter-broker listener, which today accepts it only on the controller listener, plus a broker-side envelope handler. It is deferred. +- **Transactions**: Transactional offset commits are allowed for diskless sources. Abort markers are preserved for the local portion of a consolidating partition. Transactions that span the consolidation boundary into the diskless portion are not supported: the broker logs a warning and those offsets have no abort markers. +- **Unclean leader election**: Disabled on classic-to-diskless switch (KC-129). +## Testing +- **Unit**: `ConsolidationFetcherThreadTest`, `ConsolidationReconcilerTest`, `DisklessLeaderEndPointTest`, `ConsolidatedDisklessLogPrunerTest`, `ConsolidationQuotaManagerTest`, `CaffeineCrossTierLogStartCacheTest`, `CrossTierLogStartReporterTest`, `FetchOffsetHandlerTest`, `DisklessFetchOffsetRouterTest`, plus `InklessMetadataViewTest` for `E_d`. +- **Integration** (`core`): `InklessConsolidatedDisklessTopicsTest` (produce/consume, cross-boundary reads, concurrent produce during consolidation, classic to diskless to consolidated), `InklessConsolidatedDisklessReassignmentTest` (consolidation resumes on a new broker, no loss), `InklessTopicTypeSwitcherClusterTest`. +- **System tests** (ducktape; `tests/kafkatest/tests/inkless/`). To run them, see [SYSTEM_TESTS.md](SYSTEM_TESTS.md). They cover consolidating topics, born-consolidated and switched: + - The pipeline: WAL drains into the local log and then to remote, the WAL is pruned, and every acked record is still consumable. Consolidation JMX gauges are asserted along the way. + - Durability after local loss: once the prefix is remote-only, wiping every partition directory and restarting still serves the full log from remote, including a switched topic whose offset 0 was written under a classic epoch. + - Object-store and control-plane outages during produce: the cluster doesn't lose an acked record. After recovery, lag drains and pruning resumes. + - Cross-tier reclaim via `retention.ms` and `retention.bytes`: after the early prefix is remote-only and the topic earliest is still `0`, reclaim advances that earliest, leaves a contiguous surviving tail, and deletes the reclaimed remote objects. Size-based reclaim is the `RemoteLogManager` whole-log path. The Inkless enforcer only sees WAL bytes, which are tiny once the WAL is pruned. + - `DeleteRecords` into a switched topic's tiered classic prefix `[0, seal)`: the client-visible earliest moves off `0` to exactly the delete boundary, the same on every broker (served from the control plane), and `[delete_before, seal)` stays readable. The same assertions run across leader failover, a leader that rebuilds from remote, and a born-consolidated topic. -## Testing +## Related documents -- **Unit**: `ConsolidationFetcherThreadTest`, `ConsolidationReconcilerTest`, -`DisklessLeaderEndPointTest`, `ConsolidatedDisklessLogPrunerTest`, -`ConsolidationQuotaManagerTest`, `CaffeineCrossTierLogStartCacheTest`, -`CrossTierLogStartReporterTest`, `FetchOffsetHandlerTest`, -`DisklessFetchOffsetRouterTest`, plus `InklessMetadataViewTest` for `E_d`. -- **Integration** (`core`): `InklessConsolidatedDisklessTopicsTest` (produce/consume, -cross-boundary reads, concurrent produce during consolidation, classic→diskless→consolidated), -`InklessConsolidatedDisklessReassignmentTest` (consolidation resumes on a new broker, -no loss), `InklessTopicTypeSwitcherClusterTest`. -- **System tests** (ducktape; `tests/kafkatest/tests/inkless/`; see - [System Tests](SYSTEM_TESTS.md) to run them). They cover consolidating - topics, born-consolidated and switched: - - The pipeline: WAL drains into the local log and then to remote, the WAL is - pruned, and every acked record is still consumable. Consolidation JMX - gauges are asserted along the way. - - Durability after local loss: once the prefix is remote-only, wiping every - partition directory and restarting still serves the full log from remote, - including a switched topic whose offset 0 was written under a classic - epoch. - - Object-store and control-plane outages during produce: nothing acked is - lost; after recovery, lag drains and pruning resumes. - - Cross-tier reclaim via `retention.ms` and `retention.bytes`: after the - early prefix is remote-only and the topic earliest is still `0`, reclaim - advances that earliest, leaves a contiguous surviving tail, and deletes - the reclaimed remote objects. Size-based reclaim is the `RemoteLogManager` - whole-log path; the Inkless enforcer only sees WAL bytes, which are tiny - once the WAL is pruned. - - `DeleteRecords` into a switched topic's tiered classic prefix `[0, seal)`: - the client-visible earliest moves off `0` to exactly the delete boundary, - the same on every broker (served from the control plane), and - `[delete_before, seal)` stays readable. The same assertions run across - leader failover, a leader that rebuilds from remote, and a - born-consolidated topic. - - - -## Related Documents - -- [Classic to Diskless Switch](CLASSIC_TO_DISKLESS_SWITCH.md): the classic→diskless -migration that produces a consolidating topic; sets `diskless.enable` and -`remote.storage.enable` atomically. -- [Architecture](ARCHITECTURE.md), [Features](FEATURES.md), [Glossary](GLOSSARY.md). +- [CLASSIC_TO_DISKLESS_SWITCH.md](CLASSIC_TO_DISKLESS_SWITCH.md): The classic-to-diskless migration that produces a consolidating topic. Sets `diskless.enable` and `remote.storage.enable` atomically. +- [ARCHITECTURE.md](ARCHITECTURE.md), [FEATURES.md](FEATURES.md), [GLOSSARY.md](GLOSSARY.md). From 246d2a1a32909077b4ad550d4610a93da0a68c78 Mon Sep 17 00:00:00 2001 From: Viktor Somogyi-Vass Date: Tue, 18 Aug 2026 15:41:44 +0200 Subject: [PATCH 6/6] reformat testing section --- docs/inkless/DISKLESS_CONSOLIDATION.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/inkless/DISKLESS_CONSOLIDATION.md b/docs/inkless/DISKLESS_CONSOLIDATION.md index c077e27e9d9..89af47a1833 100644 --- a/docs/inkless/DISKLESS_CONSOLIDATION.md +++ b/docs/inkless/DISKLESS_CONSOLIDATION.md @@ -94,7 +94,7 @@ consumer fetch (offset O, minBytes M) | yes +-- synchronous diskless fetch from localLEO +-- merge local ++ diskless via ConcatenatedRecords - +-- return (high watermark and log start offset taken from the diskless supplement) + +-- return (high watermark and last stable offset taken from the diskless supplement) | no (still inside local log, or error) +-- return local result ``` @@ -371,14 +371,16 @@ The broker registers these under the `io.aiven.inkless.consolidation` group. The ## Testing -- **Unit**: `ConsolidationFetcherThreadTest`, `ConsolidationReconcilerTest`, `DisklessLeaderEndPointTest`, `ConsolidatedDisklessLogPrunerTest`, `ConsolidationQuotaManagerTest`, `CaffeineCrossTierLogStartCacheTest`, `CrossTierLogStartReporterTest`, `FetchOffsetHandlerTest`, `DisklessFetchOffsetRouterTest`, plus `InklessMetadataViewTest` for `E_d`. -- **Integration** (`core`): `InklessConsolidatedDisklessTopicsTest` (produce/consume, cross-boundary reads, concurrent produce during consolidation, classic to diskless to consolidated), `InklessConsolidatedDisklessReassignmentTest` (consolidation resumes on a new broker, no loss), `InklessTopicTypeSwitcherClusterTest`. -- **System tests** (ducktape; `tests/kafkatest/tests/inkless/`). To run them, see [SYSTEM_TESTS.md](SYSTEM_TESTS.md). They cover consolidating topics, born-consolidated and switched: - - The pipeline: WAL drains into the local log and then to remote, the WAL is pruned, and every acked record is still consumable. Consolidation JMX gauges are asserted along the way. - - Durability after local loss: once the prefix is remote-only, wiping every partition directory and restarting still serves the full log from remote, including a switched topic whose offset 0 was written under a classic epoch. - - Object-store and control-plane outages during produce: the cluster doesn't lose an acked record. After recovery, lag drains and pruning resumes. - - Cross-tier reclaim via `retention.ms` and `retention.bytes`: after the early prefix is remote-only and the topic earliest is still `0`, reclaim advances that earliest, leaves a contiguous surviving tail, and deletes the reclaimed remote objects. Size-based reclaim is the `RemoteLogManager` whole-log path. The Inkless enforcer only sees WAL bytes, which are tiny once the WAL is pruned. - - `DeleteRecords` into a switched topic's tiered classic prefix `[0, seal)`: the client-visible earliest moves off `0` to exactly the delete boundary, the same on every broker (served from the control plane), and `[delete_before, seal)` stays readable. The same assertions run across leader failover, a leader that rebuilds from remote, and a born-consolidated topic. +Unit tests cover the feature. They include `DeleteRecords` into a switched topic's tiered classic prefix `[0, seal)`, and size-based reclaim via `retention.bytes` on the `RemoteLogManager` whole-log path. + +Integration tests cover produce and consume on consolidating topics, reads that cross the local/diskless boundary, concurrent produce during consolidation, a classic-to-diskless-to-consolidated switch, and reassignment that resumes consolidation on a new broker without data loss. + +System tests (ducktape) cover born-consolidated and switched consolidating topics. To run them, see [SYSTEM_TESTS.md](SYSTEM_TESTS.md). They cover the following: + +- The pipeline: the WAL drains into the local log and then to remote storage, the WAL is pruned, and every acked record is still consumable. Consolidation JMX gauges are asserted along the way. +- Durability after local loss: once the prefix is remote-only, wiping every partition directory and restarting still serves the full log from remote storage, including a switched topic whose offset 0 was written under a classic epoch. +- Object-store and control-plane outages during produce: the cluster doesn't lose an acked record. After recovery, lag drains and pruning resumes. +- Cross-tier reclaim via `retention.ms`: after the early prefix is remote-only and the topic earliest is still `0`, reclaim advances that earliest, leaves a contiguous surviving tail, and deletes the reclaimed remote objects. ## Related documents