ladybird/Libraries/LibWeb/SVG
Jelle Raaijmakers 4dbae64dce LibWeb: Unify objectBoundingBox and userSpaceOnUse coord transformations
There's a fairly complicated interaction between an SVG gradient's paint
transformation and the gradient coordinate transformation required to
correctly draw gradient fills. This was especially noticeable when
scaling down an SVG, resulting in broken gradient coordinates and
graphical glitches.

This changes the objectBoundingBox units to immediately map to the
bounding box's coordinate system, so we can unify the gradient paint
transformation logic and make it a lot simpler. We only need to undo the
bounding box offset and apply the paint transformation to fix a lot of
gradient fill bugs.
2025-10-27 16:42:27 -07:00
..
AttributeNames.cpp LibWeb: Remove the initialize_strings methods 2025-01-12 00:35:58 +01:00
AttributeNames.h LibWeb: Implement SVGFEColorMatrixElement and feColorMatrix 2025-10-23 13:36:26 +02:00
AttributeParser.cpp LibWeb/SVG: Parse comma-separated SVG viewBox 2025-08-30 15:49:11 +02:00
AttributeParser.h LibWeb/SVG: Parse comma-separated SVG viewBox 2025-08-30 15:49:11 +02:00
Default.css LibWeb: Layout foreignObject as block-level element with hidden overflow 2025-07-09 14:36:08 +02:00
Path.cpp LibWeb/SVG: Add serialization of Paths 2025-07-17 13:59:23 -04:00
Path.h LibWeb/SVG: Add serialization of Paths 2025-07-17 13:59:23 -04:00
SVGAElement.cpp LibWeb/SVG: Implement the SVGAElement.target attribute 2025-07-12 11:05:48 +02:00
SVGAElement.h LibWeb/SVG: Implement the SVGAElement.target attribute 2025-07-12 11:05:48 +02:00
SVGAElement.idl LibWeb/SVG: Implement the SVGAElement.referrerPolicy attribute 2025-07-12 11:05:48 +02:00
SVGAnimatedEnumeration.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGAnimatedEnumeration.h LibWeb: Add SVGAnimatedEnumeration 2025-02-22 10:14:29 +01:00
SVGAnimatedEnumeration.idl LibWeb: Add SVGAnimatedEnumeration 2025-02-22 10:14:29 +01:00
SVGAnimatedLength.cpp LibWeb: Implement SVGLength's read-only property 2025-08-27 11:50:27 +02:00
SVGAnimatedLength.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGAnimatedLength.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGAnimatedNumber.cpp LibWeb: Implement SVGAnimatedNumber 2025-07-11 11:25:59 +01:00
SVGAnimatedNumber.h LibWeb: Implement SVGAnimatedNumber 2025-07-11 11:25:59 +01:00
SVGAnimatedNumber.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGAnimatedRect.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGAnimatedRect.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGAnimatedRect.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGAnimatedString.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGAnimatedString.h LibWeb: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
SVGAnimatedString.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGAnimatedTransformList.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGAnimatedTransformList.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGAnimatedTransformList.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGAnimationElement.cpp LibWeb: Add barebones SVGAnimationElement class 2025-07-30 15:51:35 +01:00
SVGAnimationElement.h LibWeb: Add barebones SVGAnimationElement class 2025-07-30 15:51:35 +01:00
SVGAnimationElement.idl LibWeb: Add barebones SVGAnimationElement class 2025-07-30 15:51:35 +01:00
SVGCircleElement.cpp LibWeb: Include PropertyID.h in fewer header files 2025-10-27 14:50:54 +00:00
SVGCircleElement.h LibWeb: Avoid many style invalidations on DOM attribute mutation 2024-12-24 17:17:09 +01:00
SVGCircleElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGClipPathElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGClipPathElement.h LibWeb: Move common SVGViewport code into an SVGFitToViewBox class 2025-08-28 15:42:56 +02:00
SVGClipPathElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGDecodedImageData.cpp LibWeb: Misc. cleanup of code 2025-10-27 16:42:27 -07:00
SVGDecodedImageData.h LibWeb: Support decoding SVG favicons 2025-08-27 08:41:01 +02:00
SVGDefsElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGDefsElement.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGDefsElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGDescElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGDescElement.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGDescElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGElement.cpp LibWeb: Support font-stretch SVG presentation attribute 2025-10-11 08:12:38 +01:00
SVGElement.h LibWeb: Implement SVGLength's read-only property 2025-08-27 11:50:27 +02:00
SVGElement.idl LibWeb: Implement SVGElement.viewportElement 2025-05-16 20:36:07 +02:00
SVGEllipseElement.cpp LibWeb: Implement SVGLength's read-only property 2025-08-27 11:50:27 +02:00
SVGEllipseElement.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGEllipseElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGFEBlendElement.cpp LibWeb/SVG: Apply SVGFeBlendElement blend mode 2025-08-06 15:21:03 +02:00
SVGFEBlendElement.h LibWeb/SVG: Apply SVGFeBlendElement blend mode 2025-08-06 15:21:03 +02:00
SVGFEBlendElement.idl LibWeb/SVG: Apply SVGFeBlendElement blend mode 2025-08-06 15:21:03 +02:00
SVGFEColorMatrixElement.cpp LibWeb: Implement SVGFEColorMatrixElement and feColorMatrix 2025-10-23 13:36:26 +02:00
SVGFEColorMatrixElement.h LibWeb: Implement SVGFEColorMatrixElement and feColorMatrix 2025-10-23 13:36:26 +02:00
SVGFEColorMatrixElement.idl LibWeb: Implement SVGFEColorMatrixElement and feColorMatrix 2025-10-23 13:36:26 +02:00
SVGFECompositeElement.cpp LibWeb: Implement <feComposite> SVG filter 2025-09-30 22:33:12 +01:00
SVGFECompositeElement.h LibWeb: Implement <feComposite> SVG filter 2025-09-30 22:33:12 +01:00
SVGFECompositeElement.idl LibWeb: Implement <feComposite> SVG filter 2025-09-30 22:33:12 +01:00
SVGFEFloodElement.cpp LibWeb: Use correct colors for SVGFEFloodElement::flood_color 2025-08-04 11:29:05 +01:00
SVGFEFloodElement.h LibWeb: Use correct colors for SVGFEFloodElement::flood_color 2025-08-04 11:29:05 +01:00
SVGFEFloodElement.idl LibWeb/SVG: Add FEFloodElement 2025-07-09 18:07:12 +01:00
SVGFEGaussianBlurElement.cpp LibWeb: Implement SVGAnimatedNumber 2025-07-11 11:25:59 +01:00
SVGFEGaussianBlurElement.h LibWeb: Implement SVGAnimatedNumber 2025-07-11 11:25:59 +01:00
SVGFEGaussianBlurElement.idl LibWeb: Implement SVGAnimatedNumber 2025-07-11 11:25:59 +01:00
SVGFEImageElement.cpp LibWeb: Implement <feImage> SVG filter 2025-08-29 10:15:24 +01:00
SVGFEImageElement.h LibWeb: Implement <feImage> SVG filter 2025-08-29 10:15:24 +01:00
SVGFEImageElement.idl LibWeb: Implement <feImage> SVG filter 2025-08-29 10:15:24 +01:00
SVGFEMergeElement.cpp LibWeb: Implement <feMerge> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEMergeElement.h LibWeb: Implement <feMerge> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEMergeElement.idl LibWeb: Implement <feMerge> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEMergeNodeElement.cpp LibWeb: Implement <feMerge> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEMergeNodeElement.h LibWeb: Implement <feMerge> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEMergeNodeElement.idl LibWeb: Implement <feMerge> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEOffsetElement.cpp LibWeb: Implement <feOffset> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEOffsetElement.h LibWeb: Implement <feOffset> SVG filter 2025-08-07 16:41:12 +02:00
SVGFEOffsetElement.idl LibWeb: Implement <feOffset> SVG filter 2025-08-07 16:41:12 +02:00
SVGFilterElement.cpp LibWeb: Include PropertyID.h in fewer header files 2025-10-27 14:50:54 +00:00
SVGFilterElement.h LibWeb: Remove redundant SVG presentation attribute handling 2025-10-20 12:38:19 +01:00
SVGFilterElement.idl LibWeb: Add SVGFilterElement 2025-02-22 10:14:29 +01:00
SVGFilterPrimitiveStandardAttributes.cpp LibWeb: Include PropertyID.h in fewer header files 2025-10-27 14:50:54 +00:00
SVGFilterPrimitiveStandardAttributes.h LibWeb: Factor out some class template methods into implementation files 2025-10-27 14:50:54 +00:00
SVGFilterPrimitiveStandardAttributes.idl LibWeb/SVG: Add FilterPrimitiveStandardAttributes 2025-07-09 18:07:12 +01:00
SVGFitToViewBox.cpp LibWeb/SVG: Parse comma-separated SVG viewBox 2025-08-30 15:49:11 +02:00
SVGFitToViewBox.h LibWeb/SVG: Parse comma-separated SVG viewBox 2025-08-30 15:49:11 +02:00
SVGFitToViewBox.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGForeignObjectElement.cpp LibWeb: Remove redundant SVG presentation attribute handling 2025-10-20 12:38:19 +01:00
SVGForeignObjectElement.h LibWeb: Remove redundant SVG presentation attribute handling 2025-10-20 12:38:19 +01:00
SVGForeignObjectElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGGElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGGElement.h LibWeb: Add fast_is<T> for hotly dynamic_cast'ed things on imdb.com 2025-09-25 21:42:52 +02:00
SVGGElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGGeometryElement.cpp LibWeb: Implement the SVGGeometryElement.pathLength attribute 2025-07-12 11:49:10 +12:00
SVGGeometryElement.h LibWeb: Implement the SVGGeometryElement.pathLength attribute 2025-07-12 11:49:10 +12:00
SVGGeometryElement.idl LibWeb: Implement the SVGGeometryElement.pathLength attribute 2025-07-12 11:49:10 +12:00
SVGGradientElement.cpp LibWeb: Unify objectBoundingBox and userSpaceOnUse coord transformations 2025-10-27 16:42:27 -07:00
SVGGradientElement.h LibWeb: Misc. cleanup of code 2025-10-27 16:42:27 -07:00
SVGGradientElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGGraphicsElement.cpp LibWeb: Make getBBox() throw error for non-rendered elements 2025-10-06 00:14:04 +02:00
SVGGraphicsElement.h LibWeb: Make getBBox() throw error for non-rendered elements 2025-10-06 00:14:04 +02:00
SVGGraphicsElement.idl LibWeb: Stub out SVGGraphicsElement.getCTM() 2025-05-16 20:36:07 +02:00
SVGImageElement.cpp LibWeb: Ensure SVG image element respects viewBox 2025-09-01 13:28:35 +01:00
SVGImageElement.h LibWeb: Implement support for drawing with CanvasPattern 2025-10-23 13:20:03 +01:00
SVGImageElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGLength.cpp LibWeb/CSS: Use generated FooUnit types instead of Foo::Type 2025-09-11 17:06:44 +01:00
SVGLength.h LibWeb: Implement SVGLength's read-only property 2025-08-27 11:50:27 +02:00
SVGLength.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGLinearGradientElement.cpp LibWeb: Unify objectBoundingBox and userSpaceOnUse coord transformations 2025-10-27 16:42:27 -07:00
SVGLinearGradientElement.h AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
SVGLinearGradientElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGLineElement.cpp LibWeb: Implement SVGLength's read-only property 2025-08-27 11:50:27 +02:00
SVGLineElement.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGLineElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGMaskElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGMaskElement.h LibWeb: Move common SVGViewport code into an SVGFitToViewBox class 2025-08-28 15:42:56 +02:00
SVGMaskElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGMetadataElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGMetadataElement.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGMetadataElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGPathElement.cpp LibWeb/SVG: Move path data into Path.{h,cpp} 2025-07-17 13:59:23 -04:00
SVGPathElement.h LibWeb/SVG: Move path data into Path.{h,cpp} 2025-07-17 13:59:23 -04:00
SVGPathElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGPolygonElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGPolygonElement.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGPolygonElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGPolylineElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGPolylineElement.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGPolylineElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGRadialGradientElement.cpp LibWeb: Unify objectBoundingBox and userSpaceOnUse coord transformations 2025-10-27 16:42:27 -07:00
SVGRadialGradientElement.h AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
SVGRadialGradientElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGRectElement.cpp LibWeb: Support percentage attributes on SVG rect element 2025-09-28 19:25:18 +02:00
SVGRectElement.h LibWeb: Support percentage attributes on SVG rect element 2025-09-28 19:25:18 +02:00
SVGRectElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGScriptElement.cpp LibWeb: Avoid including Navigable.h in headers 2025-10-20 10:16:55 +01:00
SVGScriptElement.h LibWeb/SVG: Process script element when href attribute changes 2025-02-26 16:08:35 +01:00
SVGScriptElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGStopElement.cpp LibWeb: Use XML parser for SVG-as-image documents 2025-08-22 11:35:59 +02:00
SVGStopElement.h LibWeb: Support relative lengths in stop-color calcs 2025-08-04 11:29:05 +01:00
SVGStopElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGStyleElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGStyleElement.h LibWeb: Add metadata to children update steps invocation 2025-01-30 13:55:40 -07:00
SVGStyleElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGSVGElement.cpp LibWeb: Include PropertyID.h in fewer header files 2025-10-27 14:50:54 +00:00
SVGSVGElement.h LibWeb: Remove redundant SVG presentation attribute handling 2025-10-20 12:38:19 +01:00
SVGSVGElement.idl LibWeb/SVG: Mark SVG factory functions as [NewObject] 2025-04-02 17:28:45 +01:00
SVGSymbolElement.cpp Everywhere: Change west consts caught by clang-format-21 to east consts 2025-08-29 18:18:55 +01:00
SVGSymbolElement.h LibWeb: Add fast_is<T> for hotly dynamic_cast'ed things on imdb.com 2025-09-25 21:42:52 +02:00
SVGSymbolElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTextContentElement.cpp LibWeb: Port SVGFormattingContext to UTF-16 2025-08-05 15:13:36 +02:00
SVGTextContentElement.h LibWeb: Port SVGFormattingContext to UTF-16 2025-08-05 15:13:36 +02:00
SVGTextContentElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTextElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGTextElement.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGTextElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTextPathElement.cpp LibWeb/SVG: Remove remaining user of of old try_resolve_url_to() 2025-04-30 17:38:38 +01:00
SVGTextPathElement.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGTextPathElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTextPositioningElement.cpp LibJS+LibWeb: Replace JS::Utf16String with AK::Utf16String 2025-07-18 12:45:38 -04:00
SVGTextPositioningElement.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGTextPositioningElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTitleElement.cpp LibWeb+LibWebView+WebContent+UI: Port the document title to UTF-16 2025-08-02 10:10:14 -07:00
SVGTitleElement.h LibWeb: Add metadata to children update steps invocation 2025-01-30 13:55:40 -07:00
SVGTitleElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTransform.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGTransform.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGTransform.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTransformList.cpp LibJS+LibWeb: Port interned bytecode strings to UTF-16 2025-08-14 10:27:08 +02:00
SVGTransformList.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
SVGTransformList.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGTSpanElement.cpp LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SVGTSpanElement.h LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
SVGTSpanElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGUnitTypes.h LibWeb: Add SVGUnitTypes 2025-08-06 23:05:56 -04:00
SVGUnitTypes.idl LibWeb: Add SVGUnitTypes 2025-08-06 23:05:56 -04:00
SVGURIReference.h LibWeb: Replace usages of dynamic_cast with as and as_if 2025-08-22 20:26:09 +02:00
SVGURIReference.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGUseElement.cpp LibWeb: Implement SVGLength's read-only property 2025-08-27 11:50:27 +02:00
SVGUseElement.h LibWeb: Fix typos - act II 2025-04-09 15:05:20 +01:00
SVGUseElement.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
SVGViewElement.cpp LibWeb: Remove redundant SVG presentation attribute handling 2025-10-20 12:38:19 +01:00
SVGViewElement.h LibWeb: Remove redundant SVG presentation attribute handling 2025-10-20 12:38:19 +01:00
SVGViewElement.idl LibWeb: Implement SVGViewElement 2025-07-22 00:52:24 +02:00
TagNames.cpp LibWeb: Remove the initialize_strings methods 2025-01-12 00:35:58 +01:00
TagNames.h LibWeb: Implement SVGFEColorMatrixElement and feColorMatrix 2025-10-23 13:36:26 +02:00