Skip to content

Moved and renamed blogs & fixed broken links#869

Merged
gardener-prow[bot] merged 6 commits intogardener:masterfrom
n-boshnakov:update-blogs-2026.02
Feb 27, 2026
Merged

Moved and renamed blogs & fixed broken links#869
gardener-prow[bot] merged 6 commits intogardener:masterfrom
n-boshnakov:update-blogs-2026.02

Conversation

@n-boshnakov
Copy link
Contributor

@n-boshnakov n-boshnakov commented Feb 25, 2026

How to categorize this PR?

/kind enhancement

What this PR does / why we need it:
This PR:

  • renames the blogs to lowercase in order to fix broken links
  • moves all blogs in folders based on their publishing month
  • moves all images
  • has all folders open by default for the Blogs section

Which issue(s) this PR fixes:
Fixes #825

Special notes for your reviewer:
How the blogs left side navigation looks now:
image

Summary by CodeRabbit

  • New Features

    • Added structured monthly index pages for improved blog navigation and organization.
  • Bug Fixes

    • Corrected internal links and path references across blog posts and documentation.
    • Fixed blog sidebar to expand by default instead of remaining collapsed.
  • Chores

    • Standardized blog post link paths and filename casing throughout the website.

@n-boshnakov n-boshnakov requested a review from a team as a code owner February 25, 2026 14:24
@gardener-prow gardener-prow bot added kind/enhancement Enhancement, improvement, extension size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Feb 25, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 25, 2026

📝 Walkthrough

Walkthrough

This pull request addresses broken links identified by the Algolia Crawler by correcting URL slugs and directory paths, primarily by fixing incorrect capitalization and path structures. Additionally, it adds missing YAML front matter to multiple blog index pages and adjusts the default blog sidebar collapse state.

Changes

Cohort / File(s) Summary
VitePress Configuration
.vitepress/theme/blog-sidebar.ts
Changed the default collapsed state of the blog sidebar from true to false, so the sidebar now expands by default.
Blog Index Pages
website/blog/2018/06/_index.md, website/blog/2018/07/_index.md, website/blog/2018/12/_index.md, website/blog/2019/05/_index.md, website/blog/2019/06/_index.md, website/blog/2020/05/_index.md, website/blog/2020/08/_index.md, website/blog/2020/09/_index.md, website/blog/2020/10/_index.md, website/blog/2020/11/_index.md, website/blog/2020/12/_index.md, website/blog/2021/01/_index.md, website/blog/2021/02/_index.md, website/blog/2021/09/_index.md, website/blog/2022/02/_index.md, website/blog/2022/03/_index.md, website/blog/2022/06/_index.md, website/blog/2022/10/_index.md, website/blog/2023/03/_index.md, website/blog/2024/04/_index.md, website/blog/2024/05/_index.md, website/blog/2024/10/_index.md, website/blog/2024/11/_index.md, website/blog/2024/12/_index.md, website/blog/2026/01/_index.md, website/blog/2026/02/_index.md
Added YAML front matter consistently across month-level blog index pages with title, layout (blog-list), and aggregate (true) properties.
Blog Post Link Corrections
website/archived/blog/2019/06.11-Manually-Adding-a-Node-to-an-Existing-Cluster.md, website/blog/2018/12/12.22-cookies-are-dangerous.md, website/blog/2020/09/09.11-gardener-v1.9-and-v1.10-released.md, website/blog/2020/11/11.23-gardener-v1.13-released.md, website/blog/2023/03/03-27-high-availability-and-zone-outage-toleration.md, website/blog/2025/04/04-17-leaner-clusters-lower-bills.md, website/blog/2025/05/05-12-gardener-neonephos.md
Updated internal markdown links to correct capitalization and directory structure, fixing broken references to other blog posts and documentation.
Community Review Meetings
website/community/review-meetings/2022-community.md, website/community/review-meetings/2025-reviews.md
Corrected links to meeting summary blog posts, standardizing paths with lowercase slugs and proper directory nesting.
Documentation Formatting
website/documentation/guides/administer-shoots/scalability.md
Removed leading list marker from a paragraph to convert a bullet point to plain text formatting.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Poem

🐰 Hopping through links with careful care,
Slugs and slashes everywhere!
Fixed the URLs, made them right,
Crawlers happy, paths so bright.
Blog indices now stand so tall,
Broken links we fixed them all!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Out of Scope Changes check ❓ Inconclusive One minor out-of-scope change detected: the vitepress blog sidebar config collapsed state change appears unrelated to fixing broken links, though it aligns with the PR's goal of having folders open by default. Clarify whether changing the blog sidebar collapsed state from true to false is a required part of issue #825 or should be separated into a distinct change.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main objectives: moving and renaming blogs while fixing broken links.
Description check ✅ Passed The description follows the template structure with kind categorization, clear explanation of changes, issue reference, and visual context via screenshot.
Linked Issues check ✅ Passed The PR successfully addresses all 12 broken links from issue #825 by normalizing blog filenames to lowercase, reorganizing blogs into month-based folders, and updating all internal references.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Comment @coderabbitai help to get the list of available commands and usage tips.

@gardener-prow gardener-prow bot added the cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. label Feb 25, 2026
@federated-github-access federated-github-access bot added the ok-to-test Indicates a non-member PR verified by an org member that is safe to test. label Feb 25, 2026
@github-actions github-actions bot added needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. and removed ok-to-test Indicates a non-member PR verified by an org member that is safe to test. labels Feb 25, 2026
@federated-github-access federated-github-access bot added the ok-to-test Indicates a non-member PR verified by an org member that is safe to test. label Feb 25, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Feb 25, 2026

🧹 Preview Removed

The preview for this PR is no longer available since the PR has been closed.

@github-actions github-actions bot removed the ok-to-test Indicates a non-member PR verified by an org member that is safe to test. label Feb 25, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.vitepress/theme/blog-sidebar.ts (1)

30-43: ⚠️ Potential issue | 🟠 Major

Fix month sorting — parseInt receives month names, not numbers.

parseInt(item.text) receives names like "January", "March", etc. from frontmatter (due to useTitleFromFrontmatter: true and useFolderTitleFromIndexFile: true). parseInt("January") returns NaN, causing _.orderBy to produce undefined sort order.

This was broken for 2025 before; now that month _index.md files exist for 2020, 2021, 2022, 2024, 2025, and 2026, the else-branch fires for all years and months render in random order everywhere.

Month folders are named 0112, so extract and parse that numeric segment from the item's path instead:

🔢 Proposed fix — sort by the numeric month folder name extracted from the URL
- yearItem.items = _.orderBy(yearItem.items, [(item: any) => parseInt(item.text)], ['desc']);
+ yearItem.items = _.orderBy(yearItem.items, [(item: any) => {
+   // Month folders are named "01"–"12"; extract from link or base
+   const base: string = item.link ?? item.base ?? '';
+   const segments = base.replace(/\/$/, '').split('/');
+   return parseInt(segments[segments.length - 1], 10);
+ }], ['desc']);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.vitepress/theme/blog-sidebar.ts around lines 30 - 43, The current sorting
uses parseInt(item.text) (in the _.orderBy call on yearItem.items) which
receives month names ("January" etc.) and returns NaN; instead extract the
numeric month folder segment from the item's link (the path segment that is
"01".."12") and sort by parseInt(thatSegment, 10). Replace the comparator for
yearItem.items with one that derives the month number from item.link (split on
'/' and pick the segment corresponding to the month folder, then parseInt(...,
10)), and apply the same extraction/parse approach in the nested monthItem.items
ordering (where you already split item.link) so both uses of _.orderBy sort by
the numeric month folder value rather than item.text.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@website/archived/blog/2019/06.11-Manually-Adding-a-Node-to-an-Existing-Cluster.md`:
- Line 11: The markdown link "../2021/01.25-machine-controller-manager.md" in
the sentence is broken because the archived directory has no 2021 content;
update that link target to point to the actual active blog post
"01.25-machine-controller-manager.md" in the 2021 blog (e.g.,
/blog/2021/01/01.25-machine-controller-manager.md) so the link resolves to the
existing article.

---

Outside diff comments:
In @.vitepress/theme/blog-sidebar.ts:
- Around line 30-43: The current sorting uses parseInt(item.text) (in the
_.orderBy call on yearItem.items) which receives month names ("January" etc.)
and returns NaN; instead extract the numeric month folder segment from the
item's link (the path segment that is "01".."12") and sort by
parseInt(thatSegment, 10). Replace the comparator for yearItem.items with one
that derives the month number from item.link (split on '/' and pick the segment
corresponding to the month folder, then parseInt(..., 10)), and apply the same
extraction/parse approach in the nested monthItem.items ordering (where you
already split item.link) so both uses of _.orderBy sort by the numeric month
folder value rather than item.text.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ce2a636 and 7e1bd98.

⛔ Files ignored due to path filters (46)
  • website/blog/2018/06/images/blog-antipattern.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-aws-efs.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-https.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-kubernetes-enable.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-kubetail.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-namespaceisolation.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-s3-shared-storage.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-service-common-stack.png is excluded by !**/*.png
  • website/blog/2018/06/images/blog-service-service-stack.png is excluded by !**/*.png
  • website/blog/2018/06/images/teaser-1.svg is excluded by !**/*.svg
  • website/blog/2018/06/images/teaser.svg is excluded by !**/*.svg
  • website/blog/2018/07/images/teaser-patched-1.svg is excluded by !**/*.svg
  • website/blog/2018/07/images/teaser-patched.svg is excluded by !**/*.svg
  • website/blog/2018/12/images/cookie.jpg is excluded by !**/*.jpg
  • website/blog/2018/12/images/slider/cookie-00.jpg is excluded by !**/*.jpg
  • website/blog/2018/12/images/slider/cookie-01.jpg is excluded by !**/*.jpg
  • website/blog/2018/12/images/slider/cookie-02.jpg is excluded by !**/*.jpg
  • website/blog/2018/12/images/slider/cookie-03.jpg is excluded by !**/*.jpg
  • website/blog/2018/12/images/slider/cookie-05.jpg is excluded by !**/*.jpg
  • website/blog/2019/06/images/teaser-1.png is excluded by !**/*.png
  • website/blog/2019/06/images/teaser-1.svg is excluded by !**/*.svg
  • website/blog/2019/06/images/teaser-2.gif is excluded by !**/*.gif
  • website/blog/2019/06/images/teaser-2.png is excluded by !**/*.png
  • website/blog/2019/06/images/teaser.svg is excluded by !**/*.svg
  • website/blog/2020/05/images/github-mark-logo-green.svg is excluded by !**/*.svg
  • website/blog/2020/05/images/slack-logo-green.svg is excluded by !**/*.svg
  • website/blog/2020/05/images/twitter-logo-green.svg is excluded by !**/*.svg
  • website/blog/2020/05/images/website-screen-L.png is excluded by !**/*.png
  • website/blog/2020/05/images/website-screen.png is excluded by !**/*.png
  • website/blog/2020/10/images/00-001.png is excluded by !**/*.png
  • website/blog/2020/10/images/00-002.png is excluded by !**/*.png
  • website/blog/2020/10/images/00-003.png is excluded by !**/*.png
  • website/blog/2020/10/images/00-004.png is excluded by !**/*.png
  • website/blog/2020/11/images/01-001.svg is excluded by !**/*.svg
  • website/blog/2020/12/images/00.png is excluded by !**/*.png
  • website/blog/2020/12/images/01.png is excluded by !**/*.png
  • website/blog/2021/01/images/mcm-00.png is excluded by !**/*.png
  • website/blog/2021/01/images/mcm-01.png is excluded by !**/*.png
  • website/blog/2021/02/images/gardener-01.png is excluded by !**/*.png
  • website/blog/2021/02/images/gardener-02.png is excluded by !**/*.png
  • website/blog/2021/02/images/gardener-03.png is excluded by !**/*.png
  • website/blog/2024/04/images/kubecon-eu2024.png is excluded by !**/*.png
  • website/blog/2024/04/images/shoot-cluster-with-registry-cache.png is excluded by !**/*.png
  • website/blog/2024/05/images/hackathon202405-team.jpg is excluded by !**/*.jpg
  • website/blog/2024/11/images/promcon2024.jpeg is excluded by !**/*.jpeg
  • website/blog/2024/12/images/hackathon202412-team.jpg is excluded by !**/*.jpg
📒 Files selected for processing (86)
  • .vitepress/theme/blog-sidebar.ts
  • website/archived/blog/2019/06.11-Manually-Adding-a-Node-to-an-Existing-Cluster.md
  • website/blog/2018/06/06.11-anti-patterns.md
  • website/blog/2018/06/06.11-auditing-kubernetes-for-secure-setup.md
  • website/blog/2018/06/06.11-big-things-come-in-small-packages.md
  • website/blog/2018/06/06.11-hardening-the-gardener-community-setup.md
  • website/blog/2018/06/06.11-kubernetes-is-available-in-docker-for-mac-17-12-ce.md
  • website/blog/2018/06/06.11-namespace-isolation.md
  • website/blog/2018/06/06.11-namespace-scope.md
  • website/blog/2018/06/06.11-readwritemany-dynamically-provisioned-persistent-volumes-using-amazon-efs.md
  • website/blog/2018/06/06.11-shared-storage-with-s3-backend.md
  • website/blog/2018/06/06.11-watching-logs-of-several-pods.md
  • website/blog/2018/06/_index.md
  • website/blog/2018/06/images/blog-aws-efs.sketch
  • website/blog/2018/06/images/blog-https.sketch
  • website/blog/2018/06/images/blog-kubetail.sketch
  • website/blog/2018/06/images/blog-namespaceisolation.sketch
  • website/blog/2018/06/images/blog-s3-shared-storage.sketch
  • website/blog/2018/06/images/teaser-1.sketch
  • website/blog/2018/06/images/teaser.sketch
  • website/blog/2018/07/07.11-hibernate-a-cluster-to-save-money.md
  • website/blog/2018/07/_index.md
  • website/blog/2018/12/12.22-cookies-are-dangerous.md
  • website/blog/2018/12/12.25-gardener-cookies.md
  • website/blog/2018/12/_index.md
  • website/blog/2019/05/05.24-cluster-api-machine-abstractions-kubecon-talk.md
  • website/blog/2019/05/_index.md
  • website/blog/2019/06/06.11-feature-flags-in-kubernetes-applications.md
  • website/blog/2019/06/06.11-organizing-access-using-kubeconfig-files.md
  • website/blog/2019/06/_index.md
  • website/blog/2019/06/images/teaser-1.sketch
  • website/blog/2019/06/images/teaser.sketch
  • website/blog/2020/05/05.11-new-website-same-green-flower.md
  • website/blog/2020/05/_index.md
  • website/blog/2020/08/08.06-gardener-v1.8.0-released.md
  • website/blog/2020/08/_index.md
  • website/blog/2020/09/09.11-gardener-v1.9-and-v1.10-released.md
  • website/blog/2020/09/_index.md
  • website/blog/2020/10/10.19-gardener-integrates-with-kubevirt.md
  • website/blog/2020/10/10.19-shoot-reconciliation-details.md
  • website/blog/2020/10/_index.md
  • website/blog/2020/11/11.04-gardener-v1.11-and-v1.12-released.md
  • website/blog/2020/11/11.20-case-study-migrating-etcd-volumes-in-production.md
  • website/blog/2020/11/11.23-gardener-v1.13-released.md
  • website/blog/2020/11/_index.md
  • website/blog/2020/12/12.03-stackit-kubernetes-engine-with-gardener.md
  • website/blog/2020/12/_index.md
  • website/blog/2021/01/01.25-machine-controller-manager.md
  • website/blog/2021/01/_index.md
  • website/blog/2021/02/02.01-happy-anniversary-gardener.md
  • website/blog/2021/02/_index.md
  • website/blog/2021/09/09.12-navigating-cloud-native-security.md
  • website/blog/2021/09/_index.md
  • website/blog/2022/02/02.17-gardener-community-meeting-february.md
  • website/blog/2022/02/_index.md
  • website/blog/2022/03/03.23-gardener-community-meeting-march.md
  • website/blog/2022/03/_index.md
  • website/blog/2022/06/06.17-gardener-community-meeting-june.md
  • website/blog/2022/06/_index.md
  • website/blog/2022/10/10.06-gardener-community-meeting-october.md
  • website/blog/2022/10/10.20-gardener-community-meeting-october-2.md
  • website/blog/2022/10/_index.md
  • website/blog/2023/03/03-27-high-availability-and-zone-outage-toleration.md
  • website/blog/2023/03/_index.md
  • website/blog/2024/04/04-05-kubecon-cloudnativecon-europe-2024-highlights.md
  • website/blog/2024/04/04-18-spinkube-gardener-shoot-cluster.md
  • website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md
  • website/blog/2024/04/_index.md
  • website/blog/2024/05/05-21-innovation-unleashed-a-deep-dive-into-the-5th-gardener-community-hackathon.md
  • website/blog/2024/05/_index.md
  • website/blog/2024/10/10-24-gardener-kubecon-cloudnativecon-na-2024-announcement.md
  • website/blog/2024/10/_index.md
  • website/blog/2024/11/11-06-promcon-eu-2024.md
  • website/blog/2024/11/11-09-demo.md
  • website/blog/2024/11/_index.md
  • website/blog/2024/12/12-08-unleashing-potential-highlights-from-the-6th-gardener-community-hackathon.md
  • website/blog/2024/12/_index.md
  • website/blog/2025/03/03-18-gardener-kubecon-cloudnativecon-europe-2025-announcement.md
  • website/blog/2025/04/04-17-leaner-clusters-lower-bills.md
  • website/blog/2025/05/05-12-gardener-neonephos.md
  • website/blog/2025/06/06-17-taking-gardener-to-the-next-level-highlights-from-the-7th-gardener-community-hackathon-in-schelklingen.md
  • website/blog/2026/01/_index.md
  • website/blog/2026/02/_index.md
  • website/community/review-meetings/2022-community.md
  • website/community/review-meetings/2025-reviews.md
  • website/documentation/guides/administer-shoots/scalability.md

---

Gardener has an excellent ability to [automatically scale machines](../2021/01.25-Machine-Controller-Manager.md) for the cluster. From the point of view of scalability, there is **no need for manual intervention**.
Gardener has an excellent ability to [automatically scale machines](../2021/01.25-machine-controller-manager.md) for the cluster. From the point of view of scalability, there is **no need for manual intervention**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check whether the lowercase target exists in the archived folder
fd --type f "01.25-machine-controller-manager.md" website/archived/

# Also check for the old mixed-case file to confirm it was renamed (not duplicated)
fd --type f "01.25-Machine-Controller-Manager.md" website/archived/

Repository: gardener/documentation

Length of output: 48


🏁 Script executed:

#!/bin/bash
# List files in the 2021 directory
ls -la website/archived/blog/2021/ 2>/dev/null || echo "Directory does not exist"

# Search for any file with "machine" in the name
fd --type f "machine" website/archived/blog/

Repository: gardener/documentation

Length of output: 90


🏁 Script executed:

#!/bin/bash
# Check what actually exists in archived/blog/
ls -la website/archived/blog/ 2>/dev/null | head -20

# Search for any file with "machine" in name anywhere in archived/
fd --type f "machine" website/archived/

Repository: gardener/documentation

Length of output: 276


🏁 Script executed:

#!/bin/bash
# Search for machine-controller-manager files anywhere in website/
fd --type f "machine-controller-manager" website/

# Also check if there's a 2021 directory anywhere
find website/ -type d -name "2021"

Repository: gardener/documentation

Length of output: 140


The link target does not exist in the archived directory.

The link points to ../2021/01.25-machine-controller-manager.md, which would resolve to website/archived/blog/2021/01.25-machine-controller-manager.md. However, there is no 2021 directory in the archived blog structure (only 2018 and 2019 exist). The actual file exists at website/blog/2021/01/01.25-machine-controller-manager.md in the active (non-archived) blog directory. The link target is broken and needs to be corrected to point to the correct file location or replaced with a valid link.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@website/archived/blog/2019/06.11-Manually-Adding-a-Node-to-an-Existing-Cluster.md`
at line 11, The markdown link "../2021/01.25-machine-controller-manager.md" in
the sentence is broken because the archived directory has no 2021 content;
update that link target to point to the actual active blog post
"01.25-machine-controller-manager.md" in the 2021 blog (e.g.,
/blog/2021/01/01.25-machine-controller-manager.md) so the link resolves to the
existing article.

Copy link
Contributor

@BoHristova BoHristova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@gardener-prow gardener-prow bot added the lgtm Indicates that a PR is ready to be merged. label Feb 27, 2026
@gardener-prow
Copy link

gardener-prow bot commented Feb 27, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: BoHristova

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@gardener-prow
Copy link

gardener-prow bot commented Feb 27, 2026

LGTM label has been added.

DetailsGit tree hash: 3b91d31abea95ba9f5e49cb55fe8e87260971625

@gardener-prow gardener-prow bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 27, 2026
@gardener-prow gardener-prow bot merged commit 15cfe1c into gardener:master Feb 27, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. kind/enhancement Enhancement, improvement, extension lgtm Indicates that a PR is ready to be merged. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix broken links found by the Algolia Crawler

2 participants