{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://resolve-ev.com/docs/resolve-display-config.schema.json",
  "title": "Resolve Display configuration file",
  "description": "Every setting, the Mode and the CAN signals of a Resolve Display. Made and loaded on the Display settings page of resolve-ev.com, in the browser. Docs: https://resolve-ev.com/docs/resolve_display/configuration-file",
  "type": "object",
  "required": [
    "format",
    "version"
  ],
  "additionalProperties": false,
  "$defs": {
    "settings": {
      "type": "object",
      "properties": {
        "brightness": {
          "title": "Display brightness",
          "description": "A whole number, 0 to 100 %.",
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "default": 100
        },
        "ign_source": {
          "title": "Ignition source",
          "description": "The option's number: 0 = CAN signal, 1 = Ignition wire.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "CAN signal"
            },
            {
              "const": 1,
              "title": "Ignition wire"
            }
          ],
          "default": 0
        },
        "can_bitrate": {
          "title": "CAN bitrate",
          "description": "The option's number: 0 = 125 kbit/s, 1 = 250 kbit/s, 2 = 500 kbit/s (default), 3 = 1 Mbit/s.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "125 kbit/s"
            },
            {
              "const": 1,
              "title": "250 kbit/s"
            },
            {
              "const": 2,
              "title": "500 kbit/s (default)"
            },
            {
              "const": 3,
              "title": "1 Mbit/s"
            }
          ],
          "default": 2
        },
        "box_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 0
        },
        "box_name": {
          "title": "Name",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "STATE OF CHARGE"
        },
        "box_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "%"
        },
        "box_min": {
          "title": "Scale start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 0
        },
        "box_max": {
          "title": "Scale end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 100
        },
        "lg_source": {
          "title": "Left gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph).",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 18
        },
        "lg_unit": {
          "title": "Left gauge unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. After the scale's numbers. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "V"
        },
        "lg_min": {
          "title": "Left gauge start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 10
        },
        "lg_max": {
          "title": "Left gauge end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 16
        },
        "soc_color": {
          "title": "SOC bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#3CC954"
        },
        "bar_color": {
          "title": "Power bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#D9613E"
        },
        "regen_color": {
          "title": "Regen bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#3CC954"
        },
        "needle_color": {
          "title": "Left gauge needle color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#A2CAF4"
        },
        "g_bar_color": {
          "title": "G-force bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#D7C950"
        },
        "g_peak_color": {
          "title": "Peak marker color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#E65B45"
        },
        "g_force_max": {
          "title": "Range",
          "description": "The option's number: 0 = 1 G, 1 = 2 G, 2 = 3 G.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "1 G"
            },
            {
              "const": 1,
              "title": "2 G"
            },
            {
              "const": 2,
              "title": "3 G"
            }
          ],
          "default": 0
        },
        "gp_ring": {
          "title": "Ring at",
          "description": "The option's number: 0 = 0.5 G, 1 = 1 G, 2 = 1.5 G. The force the faint ring marks. The line and the dot reach the edge at about 1.5 times it.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "0.5 G"
            },
            {
              "const": 1,
              "title": "1 G"
            },
            {
              "const": 2,
              "title": "1.5 G"
            }
          ],
          "default": 1
        },
        "pg_window": {
          "title": "Time frame",
          "description": "The option's number: 0 = 1 min, 1 = 2 min, 2 = 5 min, 3 = 10 min.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "1 min"
            },
            {
              "const": 1,
              "title": "2 min"
            },
            {
              "const": 2,
              "title": "5 min"
            },
            {
              "const": 3,
              "title": "10 min"
            }
          ],
          "default": 0
        },
        "pg_power_color": {
          "title": "Power color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#D9613E"
        },
        "pg_regen_color": {
          "title": "Regen color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#3CC954"
        },
        "pg_avg_color": {
          "title": "Average line color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#A6A6A6"
        },
        "pg_source": {
          "title": "Power source",
          "description": "The option's number: 0 = Voltage × current, 1 = Power signal.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "Voltage × current"
            },
            {
              "const": 1,
              "title": "Power signal"
            }
          ],
          "default": 0
        },
        "race_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 7
        },
        "race_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "RPM"
        },
        "race_min": {
          "title": "Scale start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 0
        },
        "race_max": {
          "title": "Scale end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 10000
        },
        "race_decimals": {
          "title": "Decimals",
          "description": "The option's number: 0 = None, 1 = One.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "None"
            },
            {
              "const": 1,
              "title": "One"
            }
          ],
          "default": 0
        },
        "vin_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 7
        },
        "vin_name": {
          "title": "Name",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. At the bottom. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "REV COUNTER"
        },
        "vin_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. On the dial, below the hub.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "RPM X 100"
        },
        "vin_min": {
          "title": "Scale start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 0
        },
        "vin_max": {
          "title": "Scale end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 100
        },
        "seg_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 0
        },
        "seg_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "%"
        },
        "seg_min": {
          "title": "Scale start",
          "description": "A whole number, 0 to 100000. 0 or more: a value below it shows in the figures, with the bar dark.",
          "type": "integer",
          "minimum": 0,
          "maximum": 100000,
          "default": 0
        },
        "seg_max": {
          "title": "Scale end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 100
        },
        "cs_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 8
        },
        "cs_name": {
          "title": "Name",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Over the unit. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "SPEED"
        },
        "cs_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "km/h"
        },
        "cs_min": {
          "title": "Scale start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 0
        },
        "cs_max": {
          "title": "Scale end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 150
        },
        "ph_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 7
        },
        "ph_name": {
          "title": "Name",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Under the value's unit. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "SPEED"
        },
        "ph_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "RPM"
        },
        "ph_min": {
          "title": "Scale start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 0
        },
        "ph_max": {
          "title": "Scale end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 10000
        },
        "ph_decimals": {
          "title": "Decimals",
          "description": "The option's number: 0 = None, 1 = One.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "None"
            },
            {
              "const": 1,
              "title": "One"
            }
          ],
          "default": 0
        },
        "clk_second": {
          "title": "Second hand color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#EC6A5E"
        },
        "race_needle": {
          "title": "Needle color",
          "description": "A color, \"#RRGGBB\". The needle and the yellow marks.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#FED901"
        },
        "race_ring": {
          "title": "Ring color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#DF0216"
        },
        "vin_dial": {
          "title": "Dial color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#0C7F7D"
        },
        "vin_red": {
          "title": "Red zone color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#9B0202"
        },
        "seg_text": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#FED700"
        },
        "seg_low": {
          "title": "Low segments color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#A0FB6E"
        },
        "seg_mid": {
          "title": "Middle segments color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#FED700"
        },
        "seg_high": {
          "title": "High segments color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#FD523B"
        },
        "gl_dot": {
          "title": "Dot color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#E4E5E7"
        },
        "gl_text": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#77777A"
        },
        "gl_line": {
          "title": "Line color",
          "description": "A color, \"#RRGGBB\". The peaks all round.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#BBBCBE"
        },
        "gl_ring": {
          "title": "Ring color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#080808"
        },
        "cs_numbers": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F7E8BA"
        },
        "cs_center": {
          "title": "Center color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#4F6178"
        },
        "cs_band": {
          "title": "Outer band color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#15202C"
        },
        "cs_lines": {
          "title": "Band lines color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#4A6385"
        },
        "ph_color": {
          "title": "Phosphor color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#96F57E"
        },
        "number_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 5
        },
        "number_name": {
          "title": "Name",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Above the value. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "ISOLATION"
        },
        "number_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Below the value. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "mV"
        },
        "number_decimals": {
          "title": "Decimals",
          "description": "The option's number: 0 = None, 1 = One.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "None"
            },
            {
              "const": 1,
              "title": "One"
            }
          ],
          "default": 0
        },
        "number_color": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F6F9FC"
        },
        "warn_text": {
          "title": "Text",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Under the exclamation mark while the warning shows. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "WARNING"
        },
        "warn_color": {
          "title": "Warning color",
          "description": "A color, \"#RRGGBB\". The ring and the exclamation mark while the warning shows.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#E53935"
        },
        "warn_threshold": {
          "title": "Warning above",
          "description": "A whole number, -100000 to 100000. The warning shows while the Warning signal is above this, in its unit. 0 for an on/off bit, which shows at 1.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 0
        },
        "warn_show": {
          "title": "Show",
          "description": "The option's number: 0 = With the ignition, 1 = Always (also with the ignition off). With the ignition on, the screen shows the white ring until the warning comes. Always: a warning (or its signal lost while the CAN bus is awake) also turns the display on with the ignition off, and off again when it clears. A silent bus (a parked car) never does.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "With the ignition"
            },
            {
              "const": 1,
              "title": "Always (also with the ignition off)"
            }
          ],
          "default": 0
        },
        "cd_id": {
          "title": "CAN ID 1",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. The ID to show, in hex. Up to 3 digits (at most 7FF) is a standard ID, such as 539. 4 to 8 digits is an extended ID, such as 18FF50E5.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "539"
        },
        "warn_lost_color": {
          "title": "Signal lost color",
          "description": "A color, \"#RRGGBB\". The ring and the exclamation mark when the warning's CAN signal is lost or not set up.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#FFD600"
        },
        "warn_ok_ring": {
          "title": "White ring when all is OK",
          "description": "The option's number: 0 = Off, 1 = On. With the ignition on and no warning, a white ring shows the display is working. Off: the screen stays black until a warning (or a lost signal) comes.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "Off"
            },
            {
              "const": 1,
              "title": "On"
            }
          ],
          "default": 1
        },
        "std_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#FFFFFF"
        },
        "gf_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#D6D7D0"
        },
        "pg_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F6F9FC"
        },
        "box_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F2F2F0"
        },
        "clk_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F4F4F4"
        },
        "race_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#FEFEFE"
        },
        "vin_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F2F4F2"
        },
        "warn_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F6F9FC"
        },
        "cd_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F6F9FC"
        },
        "cd_id2": {
          "title": "CAN ID 2",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Another ID to show under the first, in hex. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": ""
        },
        "cd_id3": {
          "title": "CAN ID 3",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Another ID to show under the first, in hex. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": ""
        },
        "cd_format": {
          "title": "Format",
          "description": "The option's number: 0 = Hex, 1 = Binary, 2 = Decimal. Hex: two digits a byte, all 8 on one row. Binary: the 8 bits of each byte, 4 bytes a line.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "Hex"
            },
            {
              "const": 1,
              "title": "Binary"
            },
            {
              "const": 2,
              "title": "Decimal"
            }
          ],
          "default": 0
        },
        "cd_id_color": {
          "title": "ID color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F6F9FC"
        },
        "cd_head_color": {
          "title": "Heading color",
          "description": "A color, \"#RRGGBB\". The byte names (D0 to D7) and the HEX, BIN or DEC badge.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#87888A"
        },
        "cd_stale_color": {
          "title": "Stale bytes color",
          "description": "A color, \"#RRGGBB\". The bytes of an ID with no frame for over 2 s.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#626364"
        },
        "cd_info_color": {
          "title": "Info line color",
          "description": "A color, \"#RRGGBB\". The line under each ID: the gaps between frames and how long ago the last came, or WAITING FOR DATA.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#87888A"
        },
        "glass_source": {
          "title": "Gauge shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph). Picking a CAN value sets its CAN signal, which can then be changed in the CAN setup. Its name, unit and scale stay as you write them.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 18
        },
        "glass_name": {
          "title": "Name",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. At the bottom. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "12V BATTERY"
        },
        "glass_unit": {
          "title": "Unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Under the value",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "V"
        },
        "glass_min": {
          "title": "Scale start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 10
        },
        "glass_max": {
          "title": "Scale end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 16
        },
        "glass_decimals": {
          "title": "Decimals",
          "description": "The option's number: 0 = None, 1 = One.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "None"
            },
            {
              "const": 1,
              "title": "One"
            }
          ],
          "default": 1
        },
        "glass_bar_color": {
          "title": "Bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#6CABE7"
        },
        "glass_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#DADADA"
        },
        "glass_track": {
          "title": "Track color",
          "description": "A color, \"#RRGGBB\". The arc behind the bar.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#353639"
        },
        "glass_text": {
          "title": "Text color",
          "description": "A color, \"#RRGGBB\". The unit, the name and the small ticks.",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#9C9C9F"
        },
        "gd_detail": {
          "title": "Detail colors",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#F2F2F2"
        },
        "gd_source": {
          "title": "Bottom arc shows",
          "description": "The option's number: 0 = State of charge, 1 = Battery voltage, 2 = Battery current, 3 = Motor temperature (°C), 4 = Torque (Nm), 5 = Isolation, 6 = CAN signal, 7 = Motor speed, 8 = Road speed (km/h), 9 = Inverter voltage, 10 = Power available, 11 = Charge power limit, 12 = Charger power allowed, 13 = Charge power, 14 = Energy left, 15 = Charge time left, 16 = Max charge, 17 = State of charge (BMS), 18 = 12 V battery, 19 = Acceleration, 20 = Battery power, 21 = Motor temperature (°F), 22 = Torque (lb-ft), 23 = Road speed (mph).",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "State of charge"
            },
            {
              "const": 1,
              "title": "Battery voltage"
            },
            {
              "const": 2,
              "title": "Battery current"
            },
            {
              "const": 3,
              "title": "Motor temperature (°C)"
            },
            {
              "const": 4,
              "title": "Torque (Nm)"
            },
            {
              "const": 5,
              "title": "Isolation"
            },
            {
              "const": 6,
              "title": "CAN signal"
            },
            {
              "const": 7,
              "title": "Motor speed"
            },
            {
              "const": 8,
              "title": "Road speed (km/h)"
            },
            {
              "const": 9,
              "title": "Inverter voltage"
            },
            {
              "const": 10,
              "title": "Power available"
            },
            {
              "const": 11,
              "title": "Charge power limit"
            },
            {
              "const": 12,
              "title": "Charger power allowed"
            },
            {
              "const": 13,
              "title": "Charge power"
            },
            {
              "const": 14,
              "title": "Energy left"
            },
            {
              "const": 15,
              "title": "Charge time left"
            },
            {
              "const": 16,
              "title": "Max charge"
            },
            {
              "const": 17,
              "title": "State of charge (BMS)"
            },
            {
              "const": 18,
              "title": "12 V battery"
            },
            {
              "const": 19,
              "title": "Acceleration"
            },
            {
              "const": 20,
              "title": "Battery power"
            },
            {
              "const": 21,
              "title": "Motor temperature (°F)"
            },
            {
              "const": 22,
              "title": "Torque (lb-ft)"
            },
            {
              "const": 23,
              "title": "Road speed (mph)"
            }
          ],
          "default": 3
        },
        "gd_name": {
          "title": "Bottom arc name",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Under the arc. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "MOTOR TEMP"
        },
        "gd_unit": {
          "title": "Bottom arc unit",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #. Beside the value. Leave it empty for none.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "°C"
        },
        "gd_min": {
          "title": "Bottom arc start",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": -20
        },
        "gd_max": {
          "title": "Bottom arc end",
          "description": "A whole number, -100000 to 100000.",
          "type": "integer",
          "minimum": -100000,
          "maximum": 100000,
          "default": 80
        },
        "gd_decimals": {
          "title": "Bottom arc decimals",
          "description": "The option's number: 0 = None, 1 = One.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "None"
            },
            {
              "const": 1,
              "title": "One"
            }
          ],
          "default": 0
        },
        "dpow_source": {
          "title": "Power source",
          "description": "The option's number: 0 = Voltage × current, 1 = Power signal.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "Voltage × current"
            },
            {
              "const": 1,
              "title": "Power signal"
            }
          ],
          "default": 0
        },
        "dbar_max": {
          "title": "Power bar drive max value",
          "description": "A whole number, 10 to 600 kW.",
          "type": "integer",
          "minimum": 10,
          "maximum": 600,
          "default": 110
        },
        "dbar_min": {
          "title": "Power bar regen max value",
          "description": "A whole number, -300 to 0 kW. 0 for a car without regen: the bar then has no regen side.",
          "type": "integer",
          "minimum": -300,
          "maximum": 0,
          "default": -40
        },
        "dgear_d": {
          "title": "D",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "1"
        },
        "dgear_n": {
          "title": "N",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "2"
        },
        "dgear_r": {
          "title": "R",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "3"
        },
        "dregen_1": {
          "title": "One chevron",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "1"
        },
        "dregen_2": {
          "title": "Two chevrons",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "2"
        },
        "dport_plug": {
          "title": "Plugged in",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "2,3,5,6,7"
        },
        "dport_ac": {
          "title": "Charging",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "4"
        },
        "dport_qc": {
          "title": "Quick charging",
          "description": "Text, at most 32 characters (° and ² count as two), no ; or #.",
          "type": "string",
          "maxLength": 32,
          "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$",
          "default": "1"
        },
        "dcbar_max": {
          "title": "Charging bar max value",
          "description": "A whole number, 1 to 350 kW.",
          "type": "integer",
          "minimum": 1,
          "maximum": 350,
          "default": 10
        },
        "dqcbar_max": {
          "title": "Quick charging bar max value",
          "description": "A whole number, 1 to 350 kW.",
          "type": "integer",
          "minimum": 1,
          "maximum": 350,
          "default": 50
        },
        "dtime_source": {
          "title": "Charge time left shows",
          "description": "The option's number: 0 = Charge time left, 1 = CAN signal.",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "Charge time left"
            },
            {
              "const": 1,
              "title": "CAN signal"
            }
          ],
          "default": 0
        },
        "rc_errors": {
          "title": "Resolve Controller errors",
          "description": "The option's number: 0 = Off, 1 = On. To show the Resolve Controller's error codes on the display such as isolation fault and other BMS errors",
          "type": "integer",
          "oneOf": [
            {
              "const": 0,
              "title": "Off"
            },
            {
              "const": 1,
              "title": "On"
            }
          ],
          "default": 1
        },
        "gd_bar_color": {
          "title": "Power bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#3DEA9C"
        },
        "gd_regen_color": {
          "title": "Regen bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#0B8EFC"
        },
        "gd_dots_color": {
          "title": "Regen dots color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#57F6A2"
        },
        "gd_charge_color": {
          "title": "Charging bar color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#8FE7A2"
        },
        "gd_soc_color": {
          "title": "Charging SOC color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#8FE7A2"
        },
        "gd_limit_color": {
          "title": "Limit color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#44BCF8"
        },
        "gd_arc_color": {
          "title": "Bottom arc color",
          "description": "A color, \"#RRGGBB\".",
          "type": "string",
          "pattern": "^#?[0-9A-Fa-f]{6}$",
          "default": "#52AFFC"
        },
        "pg_volt": {
          "title": "Voltage",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Power graph CAN signals. The default is the Leaf inverter's DC voltage (0x1DA, 2 V steps). The battery's own, LB_Total_Voltage in 0x1DB, reads a little higher under load. Used while pg_source is 0.",
          "type": [
            "string",
            "null"
          ]
        },
        "pg_curr": {
          "title": "Current",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Power graph CAN signals. Positive must mean discharge (power out of the battery). The Leaf's is the other way around, hence the multiplier -1. Used while pg_source is 0.",
          "type": [
            "string",
            "null"
          ]
        },
        "pg_power": {
          "title": "Power",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Power graph CAN signals. Positive must mean discharge (power out of the battery). If yours is the other way around, set the multiplier to -1. Used while pg_source is 1.",
          "type": [
            "string",
            "null"
          ]
        },
        "box_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Box gauge CAN signal.",
          "type": [
            "string",
            "null"
          ]
        },
        "number_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Number CAN signal.",
          "type": [
            "string",
            "null"
          ]
        },
        "race_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Race CAN signal.",
          "type": [
            "string",
            "null"
          ]
        },
        "vin_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Vintage CAN signal.",
          "type": [
            "string",
            "null"
          ]
        },
        "seg_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Segment CAN signal.",
          "type": [
            "string",
            "null"
          ]
        },
        "cs_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Classic CAN signal. Road speed is the motor's rpm x 0.0145 (10000 rpm is 145 km/h): change the multiplier for other gearing or tyres.",
          "type": [
            "string",
            "null"
          ]
        },
        "ph_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Phosphor CAN signal.",
          "type": [
            "string",
            "null"
          ]
        },
        "on_signal": {
          "title": "Ignition signal",
          "description": "The name of a signal in \"signals\". Ignition. The ignition is on while this signal is 1 or more, off at 0 or when its message stops for 2 s. Default: the Resolve Controller's SystemOn (0x539, bit 16). Used while ign_source is 0.",
          "type": "string",
          "minLength": 1
        },
        "warn_signal": {
          "title": "Warning signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Warning CAN signal. The warning shows while this value is above Warning above. An on/off bit (length 1) shows at 1 with Warning above at 0. Or a value, such as a temperature in its unit. Not set at first: the screen says NOT SET UP. If its message stops for 2 s (3 s after the ignition comes on) the screen says SIGNAL LOST.",
          "type": [
            "string",
            "null"
          ]
        },
        "glass_signal": {
          "title": "Signal",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Glass CAN signal.",
          "type": [
            "string",
            "null"
          ]
        },
        "dsoc_signal": {
          "title": "State of charge",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dvolt_signal": {
          "title": "Battery voltage",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals. Used while dpow_source is 0.",
          "type": [
            "string",
            "null"
          ]
        },
        "dcurr_signal": {
          "title": "Battery current",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals. Used while dpow_source is 0.",
          "type": [
            "string",
            "null"
          ]
        },
        "dpow_signal": {
          "title": "Battery power",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals. Used while dpow_source is 1.",
          "type": [
            "string",
            "null"
          ]
        },
        "ddis_signal": {
          "title": "BMS max discharge power",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dchg_signal": {
          "title": "BMS max charge power (driving)",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "lg_signal": {
          "title": "Left gauge",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dgear_signal": {
          "title": "Gear",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dregen_signal": {
          "title": "Regen level",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dport_signal": {
          "title": "Charge state",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash charge CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dcpow_signal": {
          "title": "Charge power",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash charge CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dobc_signal": {
          "title": "OBC max power",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash charge CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dbmschg_signal": {
          "title": "BMS max charge power",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash charge CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dmaxon_signal": {
          "title": "Max charge on",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash charge CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dmaxpct_signal": {
          "title": "Max charge",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash charge CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "gd_signal": {
          "title": "Bottom arc",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash drive CAN signals.",
          "type": [
            "string",
            "null"
          ]
        },
        "dtime_signal": {
          "title": "Charge time left",
          "description": "The name of a signal in \"signals\", or null: not used (the car has no such signal). Dash charge CAN signals.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": {
        "type": [
          "number",
          "string",
          "null"
        ]
      }
    }
  },
  "properties": {
    "format": {
      "const": "resolve-display-config"
    },
    "version": {
      "description": "The format's version: 1.",
      "type": "integer",
      "minimum": 1,
      "default": 1
    },
    "written": {
      "description": "Informational; ignored when loading.",
      "type": "object",
      "properties": {
        "by": {
          "type": "string"
        },
        "firmware": {
          "type": "string"
        },
        "hardware": {
          "type": "string"
        },
        "date": {
          "type": "string",
          "format": "date"
        }
      }
    },
    "mode": {
      "description": "The Mode the display shows, by its name: STANDARD (Sport), G_FORCE (Bars), POWER_GRAPH (Power graph), BOX_GAUGE (Box gauge), CLOCK (Bauhaus), RACE (Sport), VINTAGE (Vintage), SEGMENT (Segment), G_PEAKS (Line), CLASSIC_SPEEDO (Classic), PHOSPHOR (Phosphor), NUMBER (Number), WARNING (Warning), CAN_DATA (CAN data), GLASS (Glass), GLASS_DASH (Glass). A display with newer firmware may have more.",
      "anyOf": [
        {
          "enum": [
            "STANDARD",
            "G_FORCE",
            "POWER_GRAPH",
            "BOX_GAUGE",
            "CLOCK",
            "RACE",
            "VINTAGE",
            "SEGMENT",
            "G_PEAKS",
            "CLASSIC_SPEEDO",
            "PHOSPHOR",
            "NUMBER",
            "WARNING",
            "CAN_DATA",
            "GLASS",
            "GLASS_DASH"
          ]
        },
        {
          "type": "string",
          "pattern": "^[A-Z][A-Z0-9_]*$"
        }
      ]
    },
    "signals": {
      "description": "The named CAN signals the slots (the *_signal keys and the like) refer to. The name is the key.",
      "type": "object",
      "propertyNames": {
        "minLength": 1,
        "maxLength": 32,
        "pattern": "^[\\x20-\\x22\\x24-\\x3A\\x3C-\\x7E°²]*$"
      },
      "additionalProperties": {
        "type": "object",
        "required": [
          "id",
          "dbc"
        ],
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "The CAN ID: \"0x1DA\" (hex) or a number. At most 0x7FF, or 0x1FFFFFFF when extended.",
            "oneOf": [
              {
                "type": "string",
                "pattern": "^0x[0-9A-Fa-f]{1,8}$"
              },
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 536870911
              }
            ]
          },
          "extended": {
            "description": "A 29-bit ID.",
            "type": "boolean",
            "default": false
          },
          "dbc": {
            "description": "The signal as a DBC SG_ line: SG_ <name> : <start>|<length>@<1 Intel, 0 Motorola><+ unsigned, - signed> (<factor>,<offset>) [<min>|<max>] \"<unit>\". Decoded values outside min..max count as missing. The name and unit are informational.",
            "type": "string",
            "pattern": "^\\s*SG_\\s+\\w+\\s*(M|m\\d+M?)?\\s*:\\s*\\d+\\s*\\|\\s*\\d+\\s*@\\s*[01]\\s*[+-]\\s*\\(\\s*[^,\\s)]+\\s*,\\s*[^)\\s]+\\s*\\)\\s*\\[\\s*[^|\\s\\]]+\\s*\\|\\s*[^\\]\\s]+\\s*\\]"
          },
          "multiplier": {
            "description": "Applied after decoding, e.g. -1 flips the sign. Not 0.",
            "type": "number",
            "not": {
              "const": 0
            },
            "default": 1
          }
        }
      }
    },
    "general": {
      "description": "Settings of every screen (or of several); any setting is accepted here or under a screen.",
      "$ref": "#/$defs/settings"
    },
    "screens": {
      "description": "One object per Mode name: that screen's own settings. A newer firmware's Mode has its own object too.",
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/settings"
      },
      "propertyNames": {
        "pattern": "^[A-Z][A-Z0-9_]*$"
      },
      "properties": {
        "STANDARD": {
          "title": "Sport",
          "$ref": "#/$defs/settings",
          "properties": {
            "lg_source": {
              "$ref": "#/$defs/settings/properties/lg_source"
            },
            "lg_unit": {
              "$ref": "#/$defs/settings/properties/lg_unit"
            },
            "lg_min": {
              "$ref": "#/$defs/settings/properties/lg_min"
            },
            "lg_max": {
              "$ref": "#/$defs/settings/properties/lg_max"
            },
            "soc_color": {
              "$ref": "#/$defs/settings/properties/soc_color"
            },
            "bar_color": {
              "$ref": "#/$defs/settings/properties/bar_color"
            },
            "regen_color": {
              "$ref": "#/$defs/settings/properties/regen_color"
            },
            "needle_color": {
              "$ref": "#/$defs/settings/properties/needle_color"
            },
            "std_detail": {
              "$ref": "#/$defs/settings/properties/std_detail"
            },
            "lg_signal": {
              "$ref": "#/$defs/settings/properties/lg_signal"
            }
          }
        },
        "G_FORCE": {
          "title": "Bars",
          "$ref": "#/$defs/settings",
          "properties": {
            "g_bar_color": {
              "$ref": "#/$defs/settings/properties/g_bar_color"
            },
            "g_peak_color": {
              "$ref": "#/$defs/settings/properties/g_peak_color"
            },
            "g_force_max": {
              "$ref": "#/$defs/settings/properties/g_force_max"
            },
            "gf_detail": {
              "$ref": "#/$defs/settings/properties/gf_detail"
            }
          }
        },
        "POWER_GRAPH": {
          "title": "Power graph",
          "$ref": "#/$defs/settings",
          "properties": {
            "pg_window": {
              "$ref": "#/$defs/settings/properties/pg_window"
            },
            "pg_power_color": {
              "$ref": "#/$defs/settings/properties/pg_power_color"
            },
            "pg_regen_color": {
              "$ref": "#/$defs/settings/properties/pg_regen_color"
            },
            "pg_avg_color": {
              "$ref": "#/$defs/settings/properties/pg_avg_color"
            },
            "pg_source": {
              "$ref": "#/$defs/settings/properties/pg_source"
            },
            "pg_detail": {
              "$ref": "#/$defs/settings/properties/pg_detail"
            },
            "pg_volt": {
              "$ref": "#/$defs/settings/properties/pg_volt"
            },
            "pg_curr": {
              "$ref": "#/$defs/settings/properties/pg_curr"
            },
            "pg_power": {
              "$ref": "#/$defs/settings/properties/pg_power"
            }
          }
        },
        "BOX_GAUGE": {
          "title": "Box gauge",
          "$ref": "#/$defs/settings",
          "properties": {
            "box_source": {
              "$ref": "#/$defs/settings/properties/box_source"
            },
            "box_name": {
              "$ref": "#/$defs/settings/properties/box_name"
            },
            "box_unit": {
              "$ref": "#/$defs/settings/properties/box_unit"
            },
            "box_min": {
              "$ref": "#/$defs/settings/properties/box_min"
            },
            "box_max": {
              "$ref": "#/$defs/settings/properties/box_max"
            },
            "box_detail": {
              "$ref": "#/$defs/settings/properties/box_detail"
            },
            "box_signal": {
              "$ref": "#/$defs/settings/properties/box_signal"
            }
          }
        },
        "CLOCK": {
          "title": "Bauhaus",
          "$ref": "#/$defs/settings",
          "properties": {
            "clk_second": {
              "$ref": "#/$defs/settings/properties/clk_second"
            },
            "clk_detail": {
              "$ref": "#/$defs/settings/properties/clk_detail"
            }
          }
        },
        "RACE": {
          "title": "Sport",
          "$ref": "#/$defs/settings",
          "properties": {
            "race_source": {
              "$ref": "#/$defs/settings/properties/race_source"
            },
            "race_unit": {
              "$ref": "#/$defs/settings/properties/race_unit"
            },
            "race_min": {
              "$ref": "#/$defs/settings/properties/race_min"
            },
            "race_max": {
              "$ref": "#/$defs/settings/properties/race_max"
            },
            "race_decimals": {
              "$ref": "#/$defs/settings/properties/race_decimals"
            },
            "race_needle": {
              "$ref": "#/$defs/settings/properties/race_needle"
            },
            "race_ring": {
              "$ref": "#/$defs/settings/properties/race_ring"
            },
            "race_detail": {
              "$ref": "#/$defs/settings/properties/race_detail"
            },
            "race_signal": {
              "$ref": "#/$defs/settings/properties/race_signal"
            }
          }
        },
        "VINTAGE": {
          "title": "Vintage",
          "$ref": "#/$defs/settings",
          "properties": {
            "vin_source": {
              "$ref": "#/$defs/settings/properties/vin_source"
            },
            "vin_name": {
              "$ref": "#/$defs/settings/properties/vin_name"
            },
            "vin_unit": {
              "$ref": "#/$defs/settings/properties/vin_unit"
            },
            "vin_min": {
              "$ref": "#/$defs/settings/properties/vin_min"
            },
            "vin_max": {
              "$ref": "#/$defs/settings/properties/vin_max"
            },
            "vin_dial": {
              "$ref": "#/$defs/settings/properties/vin_dial"
            },
            "vin_red": {
              "$ref": "#/$defs/settings/properties/vin_red"
            },
            "vin_detail": {
              "$ref": "#/$defs/settings/properties/vin_detail"
            },
            "vin_signal": {
              "$ref": "#/$defs/settings/properties/vin_signal"
            }
          }
        },
        "SEGMENT": {
          "title": "Segment",
          "$ref": "#/$defs/settings",
          "properties": {
            "seg_source": {
              "$ref": "#/$defs/settings/properties/seg_source"
            },
            "seg_unit": {
              "$ref": "#/$defs/settings/properties/seg_unit"
            },
            "seg_min": {
              "$ref": "#/$defs/settings/properties/seg_min"
            },
            "seg_max": {
              "$ref": "#/$defs/settings/properties/seg_max"
            },
            "seg_text": {
              "$ref": "#/$defs/settings/properties/seg_text"
            },
            "seg_low": {
              "$ref": "#/$defs/settings/properties/seg_low"
            },
            "seg_mid": {
              "$ref": "#/$defs/settings/properties/seg_mid"
            },
            "seg_high": {
              "$ref": "#/$defs/settings/properties/seg_high"
            },
            "seg_signal": {
              "$ref": "#/$defs/settings/properties/seg_signal"
            }
          }
        },
        "G_PEAKS": {
          "title": "Line",
          "$ref": "#/$defs/settings",
          "properties": {
            "gp_ring": {
              "$ref": "#/$defs/settings/properties/gp_ring"
            },
            "gl_dot": {
              "$ref": "#/$defs/settings/properties/gl_dot"
            },
            "gl_text": {
              "$ref": "#/$defs/settings/properties/gl_text"
            },
            "gl_line": {
              "$ref": "#/$defs/settings/properties/gl_line"
            },
            "gl_ring": {
              "$ref": "#/$defs/settings/properties/gl_ring"
            }
          }
        },
        "CLASSIC_SPEEDO": {
          "title": "Classic",
          "$ref": "#/$defs/settings",
          "properties": {
            "cs_source": {
              "$ref": "#/$defs/settings/properties/cs_source"
            },
            "cs_name": {
              "$ref": "#/$defs/settings/properties/cs_name"
            },
            "cs_unit": {
              "$ref": "#/$defs/settings/properties/cs_unit"
            },
            "cs_min": {
              "$ref": "#/$defs/settings/properties/cs_min"
            },
            "cs_max": {
              "$ref": "#/$defs/settings/properties/cs_max"
            },
            "cs_numbers": {
              "$ref": "#/$defs/settings/properties/cs_numbers"
            },
            "cs_center": {
              "$ref": "#/$defs/settings/properties/cs_center"
            },
            "cs_band": {
              "$ref": "#/$defs/settings/properties/cs_band"
            },
            "cs_lines": {
              "$ref": "#/$defs/settings/properties/cs_lines"
            },
            "cs_signal": {
              "$ref": "#/$defs/settings/properties/cs_signal"
            }
          }
        },
        "PHOSPHOR": {
          "title": "Phosphor",
          "$ref": "#/$defs/settings",
          "properties": {
            "ph_source": {
              "$ref": "#/$defs/settings/properties/ph_source"
            },
            "ph_name": {
              "$ref": "#/$defs/settings/properties/ph_name"
            },
            "ph_unit": {
              "$ref": "#/$defs/settings/properties/ph_unit"
            },
            "ph_min": {
              "$ref": "#/$defs/settings/properties/ph_min"
            },
            "ph_max": {
              "$ref": "#/$defs/settings/properties/ph_max"
            },
            "ph_decimals": {
              "$ref": "#/$defs/settings/properties/ph_decimals"
            },
            "ph_color": {
              "$ref": "#/$defs/settings/properties/ph_color"
            },
            "ph_signal": {
              "$ref": "#/$defs/settings/properties/ph_signal"
            }
          }
        },
        "NUMBER": {
          "title": "Number",
          "$ref": "#/$defs/settings",
          "properties": {
            "number_source": {
              "$ref": "#/$defs/settings/properties/number_source"
            },
            "number_name": {
              "$ref": "#/$defs/settings/properties/number_name"
            },
            "number_unit": {
              "$ref": "#/$defs/settings/properties/number_unit"
            },
            "number_decimals": {
              "$ref": "#/$defs/settings/properties/number_decimals"
            },
            "number_color": {
              "$ref": "#/$defs/settings/properties/number_color"
            },
            "number_signal": {
              "$ref": "#/$defs/settings/properties/number_signal"
            }
          }
        },
        "WARNING": {
          "title": "Warning",
          "$ref": "#/$defs/settings",
          "properties": {
            "warn_text": {
              "$ref": "#/$defs/settings/properties/warn_text"
            },
            "warn_color": {
              "$ref": "#/$defs/settings/properties/warn_color"
            },
            "warn_threshold": {
              "$ref": "#/$defs/settings/properties/warn_threshold"
            },
            "warn_show": {
              "$ref": "#/$defs/settings/properties/warn_show"
            },
            "warn_lost_color": {
              "$ref": "#/$defs/settings/properties/warn_lost_color"
            },
            "warn_ok_ring": {
              "$ref": "#/$defs/settings/properties/warn_ok_ring"
            },
            "warn_detail": {
              "$ref": "#/$defs/settings/properties/warn_detail"
            },
            "warn_signal": {
              "$ref": "#/$defs/settings/properties/warn_signal"
            }
          }
        },
        "CAN_DATA": {
          "title": "CAN data",
          "$ref": "#/$defs/settings",
          "properties": {
            "cd_id": {
              "$ref": "#/$defs/settings/properties/cd_id"
            },
            "cd_detail": {
              "$ref": "#/$defs/settings/properties/cd_detail"
            },
            "cd_id2": {
              "$ref": "#/$defs/settings/properties/cd_id2"
            },
            "cd_id3": {
              "$ref": "#/$defs/settings/properties/cd_id3"
            },
            "cd_format": {
              "$ref": "#/$defs/settings/properties/cd_format"
            },
            "cd_id_color": {
              "$ref": "#/$defs/settings/properties/cd_id_color"
            },
            "cd_head_color": {
              "$ref": "#/$defs/settings/properties/cd_head_color"
            },
            "cd_stale_color": {
              "$ref": "#/$defs/settings/properties/cd_stale_color"
            },
            "cd_info_color": {
              "$ref": "#/$defs/settings/properties/cd_info_color"
            }
          }
        },
        "GLASS": {
          "title": "Glass",
          "$ref": "#/$defs/settings",
          "properties": {
            "glass_source": {
              "$ref": "#/$defs/settings/properties/glass_source"
            },
            "glass_name": {
              "$ref": "#/$defs/settings/properties/glass_name"
            },
            "glass_unit": {
              "$ref": "#/$defs/settings/properties/glass_unit"
            },
            "glass_min": {
              "$ref": "#/$defs/settings/properties/glass_min"
            },
            "glass_max": {
              "$ref": "#/$defs/settings/properties/glass_max"
            },
            "glass_decimals": {
              "$ref": "#/$defs/settings/properties/glass_decimals"
            },
            "glass_bar_color": {
              "$ref": "#/$defs/settings/properties/glass_bar_color"
            },
            "glass_detail": {
              "$ref": "#/$defs/settings/properties/glass_detail"
            },
            "glass_track": {
              "$ref": "#/$defs/settings/properties/glass_track"
            },
            "glass_text": {
              "$ref": "#/$defs/settings/properties/glass_text"
            },
            "glass_signal": {
              "$ref": "#/$defs/settings/properties/glass_signal"
            }
          }
        },
        "GLASS_DASH": {
          "title": "Glass",
          "$ref": "#/$defs/settings",
          "properties": {
            "gd_detail": {
              "$ref": "#/$defs/settings/properties/gd_detail"
            },
            "gd_source": {
              "$ref": "#/$defs/settings/properties/gd_source"
            },
            "gd_name": {
              "$ref": "#/$defs/settings/properties/gd_name"
            },
            "gd_unit": {
              "$ref": "#/$defs/settings/properties/gd_unit"
            },
            "gd_min": {
              "$ref": "#/$defs/settings/properties/gd_min"
            },
            "gd_max": {
              "$ref": "#/$defs/settings/properties/gd_max"
            },
            "gd_decimals": {
              "$ref": "#/$defs/settings/properties/gd_decimals"
            },
            "dtime_source": {
              "$ref": "#/$defs/settings/properties/dtime_source"
            },
            "gd_bar_color": {
              "$ref": "#/$defs/settings/properties/gd_bar_color"
            },
            "gd_regen_color": {
              "$ref": "#/$defs/settings/properties/gd_regen_color"
            },
            "gd_dots_color": {
              "$ref": "#/$defs/settings/properties/gd_dots_color"
            },
            "gd_charge_color": {
              "$ref": "#/$defs/settings/properties/gd_charge_color"
            },
            "gd_soc_color": {
              "$ref": "#/$defs/settings/properties/gd_soc_color"
            },
            "gd_limit_color": {
              "$ref": "#/$defs/settings/properties/gd_limit_color"
            },
            "gd_arc_color": {
              "$ref": "#/$defs/settings/properties/gd_arc_color"
            },
            "gd_signal": {
              "$ref": "#/$defs/settings/properties/gd_signal"
            },
            "dtime_signal": {
              "$ref": "#/$defs/settings/properties/dtime_signal"
            }
          }
        }
      }
    }
  }
}
