prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Keen Home Smart Vent Models
  I've been having problems with the Keen Home Smart Vent Quirks and realized that there are additional models that need the DoublingPowerConfigurationCluster on them. I validated that the following manufacturer/models work when added but am unable to submit the change myself.
  
  ("Keen Home Inc", "SV01-410-MP-1.1")
  ("Keen Home Inc", "SV01-410-MP-1.0")
  ("Keen Home Inc", "SV01-410-MP-1.5")
  ("Keen Home Inc", "SV02-410-MP-1.3")
  
  </issue>
  <code>
  [start of zhaquirks/keenhome/sv02612mp13.py]
  1 """Smart vent quirk."""
  2 from zigpy.profiles import zha
  3 from zigpy.quirks import CustomDevice
  4 from zigpy.zcl.clusters.general import (
  5     Basic,
  6     Groups,
  7     Identify,
  8     LevelControl,
  9     OnOff,
  10     Ota,
  11     PollControl,
  12     Scenes,
  13 )
  14 from zigpy.zcl.clusters.measurement import PressureMeasurement, TemperatureMeasurement
  15 
  16 from .. import DoublingPowerConfigurationCluster
  17 from ..const import (
  18     DEVICE_TYPE,
  19     ENDPOINTS,
  20     INPUT_CLUSTERS,
  21     MODELS_INFO,
  22     OUTPUT_CLUSTERS,
  23     PROFILE_ID,
  24 )
  25 
  26 DIAGNOSTICS_CLUSTER_ID = 0x0B05  # decimal = 2821
  27 KEEN1_CLUSTER_ID = 0xFC01  # decimal = 64513
  28 KEEN2_CLUSTER_ID = 0xFC02  # decimal = 64514
  29 
  30 
  31 class KeenHomeSmartVent(CustomDevice):
  32     """Custom device representing Keen Home Smart Vent."""
  33 
  34     signature = {
  35         # <SimpleDescriptor endpoint=1 profile=260 device_type=3
  36         # device_version=0
  37         # input_clusters=[
  38         #   0, 1, 3, 4, 5, 6, 8, 32, 1026, 1027, 2821, 64513, 64514]
  39         # output_clusters=[25]>
  40         MODELS_INFO: [("Keen Home Inc", "SV02-612-MP-1.3")],
  41         ENDPOINTS: {
  42             1: {
  43                 PROFILE_ID: zha.PROFILE_ID,
  44                 DEVICE_TYPE: zha.DeviceType.LEVEL_CONTROLLABLE_OUTPUT,
  45                 INPUT_CLUSTERS: [
  46                     Basic.cluster_id,
  47                     DoublingPowerConfigurationCluster.cluster_id,
  48                     Identify.cluster_id,
  49                     Groups.cluster_id,
  50                     Scenes.cluster_id,
  51                     OnOff.cluster_id,
  52                     LevelControl.cluster_id,
  53                     PollControl.cluster_id,
  54                     TemperatureMeasurement.cluster_id,
  55                     PressureMeasurement.cluster_id,
  56                     DIAGNOSTICS_CLUSTER_ID,
  57                     KEEN1_CLUSTER_ID,
  58                     KEEN2_CLUSTER_ID,
  59                 ],
  60                 OUTPUT_CLUSTERS: [Ota.cluster_id],
  61             }
  62         },
  63     }
  64 
  65     replacement = {
  66         ENDPOINTS: {
  67             1: {
  68                 PROFILE_ID: zha.PROFILE_ID,
  69                 INPUT_CLUSTERS: [
  70                     Basic.cluster_id,
  71                     DoublingPowerConfigurationCluster,
  72                     Identify.cluster_id,
  73                     Groups.cluster_id,
  74                     Scenes.cluster_id,
  75                     OnOff.cluster_id,
  76                     LevelControl.cluster_id,
  77                     PollControl.cluster_id,
  78                     TemperatureMeasurement.cluster_id,
  79                     PressureMeasurement.cluster_id,
  80                     DIAGNOSTICS_CLUSTER_ID,
  81                     KEEN1_CLUSTER_ID,
  82                     KEEN2_CLUSTER_ID,
  83                 ],
  84                 OUTPUT_CLUSTERS: [Ota.cluster_id],
  85             }
  86         }
  87     }
  88
  [end of zhaquirks/keenhome/sv02612mp13.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/zhaquirks/keenhome/sv02612mp13.py b/zhaquirks/keenhome/sv02612mp13.py
  --- a/zhaquirks/keenhome/sv02612mp13.py
  +++ b/zhaquirks/keenhome/sv02612mp13.py
  @@ -37,7 +37,18 @@
           # input_clusters=[
           #   0, 1, 3, 4, 5, 6, 8, 32, 1026, 1027, 2821, 64513, 64514]
           # output_clusters=[25]>
  -        MODELS_INFO: [("Keen Home Inc", "SV02-612-MP-1.3")],
  +        MODELS_INFO: [
  +            ("Keen Home Inc", "SV01-410-MP-1.0"),
  +            ("Keen Home Inc", "SV01-410-MP-1.1"),
  +            ("Keen Home Inc", "SV01-410-MP-1.4"),
  +            ("Keen Home Inc", "SV01-410-MP-1.5"),
  +            ("Keen Home Inc", "SV02-410-MP-1.3"),
  +            ("Keen Home Inc", "SV01-412-MP-1.0"),
  +            ("Keen Home Inc", "SV01-610-MP-1.0"),
  +            ("Keen Home Inc", "SV02-610-MP-1.3"),
  +            ("Keen Home Inc", "SV01-612-MP-1.0"),
  +            ("Keen Home Inc", "SV02-612-MP-1.3"),
  +        ],
           ENDPOINTS: {
               1: {
                   PROFILE_ID: zha.PROFILE_ID,
  
verification_info: {"golden_diff": "diff --git a/zhaquirks/keenhome/sv02612mp13.py b/zhaquirks/keenhome/sv02612mp13.py\n--- a/zhaquirks/keenhome/sv02612mp13.py\n+++ b/zhaquirks/keenhome/sv02612mp13.py\n@@ -37,7 +37,18 @@\n         # input_clusters=[\n         #   0, 1, 3, 4, 5, 6, 8, 32, 1026, 1027, 2821, 64513, 64514]\n         # output_clusters=[25]>\n-        MODELS_INFO: [(\"Keen Home Inc\", \"SV02-612-MP-1.3\")],\n+        MODELS_INFO: [\n+            (\"Keen Home Inc\", \"SV01-410-MP-1.0\"),\n+            (\"Keen Home Inc\", \"SV01-410-MP-1.1\"),\n+            (\"Keen Home Inc\", \"SV01-410-MP-1.4\"),\n+            (\"Keen Home Inc\", \"SV01-410-MP-1.5\"),\n+            (\"Keen Home Inc\", \"SV02-410-MP-1.3\"),\n+            (\"Keen Home Inc\", \"SV01-412-MP-1.0\"),\n+            (\"Keen Home Inc\", \"SV01-610-MP-1.0\"),\n+            (\"Keen Home Inc\", \"SV02-610-MP-1.3\"),\n+            (\"Keen Home Inc\", \"SV01-612-MP-1.0\"),\n+            (\"Keen Home Inc\", \"SV02-612-MP-1.3\"),\n+        ],\n         ENDPOINTS: {\n             1: {\n                 PROFILE_ID: zha.PROFILE_ID,\n", "issue": "Keen Home Smart Vent Models\nI've been having problems with the Keen Home Smart Vent Quirks and realized that there are additional models that need the DoublingPowerConfigurationCluster on them. I validated that the following manufacturer/models work when added but am unable to submit the change myself.\r\n\r\n(\"Keen Home Inc\", \"SV01-410-MP-1.1\")\r\n(\"Keen Home Inc\", \"SV01-410-MP-1.0\")\r\n(\"Keen Home Inc\", \"SV01-410-MP-1.5\")\r\n(\"Keen Home Inc\", \"SV02-410-MP-1.3\")\n", "before_files": [{"content": "\"\"\"Smart vent quirk.\"\"\"\nfrom zigpy.profiles import zha\nfrom zigpy.quirks import CustomDevice\nfrom zigpy.zcl.clusters.general import (\n    Basic,\n    Groups,\n    Identify,\n    LevelControl,\n    OnOff,\n    Ota,\n    PollControl,\n    Scenes,\n)\nfrom zigpy.zcl.clusters.measurement import PressureMeasurement, TemperatureMeasurement\n\nfrom .. import DoublingPowerConfigurationCluster\nfrom ..const import (\n    DEVICE_TYPE,\n    ENDPOINTS,\n    INPUT_CLUSTERS,\n    MODELS_INFO,\n    OUTPUT_CLUSTERS,\n    PROFILE_ID,\n)\n\nDIAGNOSTICS_CLUSTER_ID = 0x0B05  # decimal = 2821\nKEEN1_CLUSTER_ID = 0xFC01  # decimal = 64513\nKEEN2_CLUSTER_ID = 0xFC02  # decimal = 64514\n\n\nclass KeenHomeSmartVent(CustomDevice):\n    \"\"\"Custom device representing Keen Home Smart Vent.\"\"\"\n\n    signature = {\n        # <SimpleDescriptor endpoint=1 profile=260 device_type=3\n        # device_version=0\n        # input_clusters=[\n        #   0, 1, 3, 4, 5, 6, 8, 32, 1026, 1027, 2821, 64513, 64514]\n        # output_clusters=[25]>\n        MODELS_INFO: [(\"Keen Home Inc\", \"SV02-612-MP-1.3\")],\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                DEVICE_TYPE: zha.DeviceType.LEVEL_CONTROLLABLE_OUTPUT,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    DoublingPowerConfigurationCluster.cluster_id,\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    Scenes.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    PollControl.cluster_id,\n                    TemperatureMeasurement.cluster_id,\n                    PressureMeasurement.cluster_id,\n                    DIAGNOSTICS_CLUSTER_ID,\n                    KEEN1_CLUSTER_ID,\n                    KEEN2_CLUSTER_ID,\n                ],\n                OUTPUT_CLUSTERS: [Ota.cluster_id],\n            }\n        },\n    }\n\n    replacement = {\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    DoublingPowerConfigurationCluster,\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    Scenes.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    PollControl.cluster_id,\n                    TemperatureMeasurement.cluster_id,\n                    PressureMeasurement.cluster_id,\n                    DIAGNOSTICS_CLUSTER_ID,\n                    KEEN1_CLUSTER_ID,\n                    KEEN2_CLUSTER_ID,\n                ],\n                OUTPUT_CLUSTERS: [Ota.cluster_id],\n            }\n        }\n    }\n", "path": "zhaquirks/keenhome/sv02612mp13.py"}]}