// Package schemadata Code generated by go-bindata. (@generated) DO NOT EDIT.
// sources:
// etc/schemas/arduino-boards-txt-definitions-schema.json
// etc/schemas/arduino-boards-txt-permissive-schema.json
// etc/schemas/arduino-boards-txt-schema.json
// etc/schemas/arduino-boards-txt-strict-schema.json
// etc/schemas/arduino-library-properties-definitions-schema.json
// etc/schemas/arduino-library-properties-permissive-schema.json
// etc/schemas/arduino-library-properties-schema.json
// etc/schemas/arduino-library-properties-strict-schema.json
// etc/schemas/arduino-package-index-definitions-schema.json
// etc/schemas/arduino-package-index-permissive-schema.json
// etc/schemas/arduino-package-index-schema.json
// etc/schemas/arduino-package-index-strict-schema.json
// etc/schemas/arduino-platform-txt-definitions-schema.json
// etc/schemas/arduino-platform-txt-permissive-schema.json
// etc/schemas/arduino-platform-txt-schema.json
// etc/schemas/arduino-platform-txt-strict-schema.json
// etc/schemas/arduino-programmers-txt-definitions-schema.json
// etc/schemas/arduino-programmers-txt-permissive-schema.json
// etc/schemas/arduino-programmers-txt-schema.json
// etc/schemas/arduino-programmers-txt-strict-schema.json
// etc/schemas/general-definitions-schema.json
package schemadata

import (
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)
type asset struct {
	bytes []byte
	info  os.FileInfo
}

type bindataFileInfo struct {
	name    string
	size    int64
	mode    os.FileMode
	modTime time.Time
}

// Name return file name
func (fi bindataFileInfo) Name() string {
	return fi.name
}

// Size return file size
func (fi bindataFileInfo) Size() int64 {
	return fi.size
}

// Mode return file mode
func (fi bindataFileInfo) Mode() os.FileMode {
	return fi.mode
}

// Mode return file modify time
func (fi bindataFileInfo) ModTime() time.Time {
	return fi.modTime
}

// IsDir return file whether a directory
func (fi bindataFileInfo) IsDir() bool {
	return fi.mode&os.ModeDir != 0
}

// Sys return file is sys mode
func (fi bindataFileInfo) Sys() interface{} {
	return nil
}

var _arduinoBoardsTxtDefinitionsSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-boards-txt-definitions-schema.json",
  "title": "Shared definitions for the Arduino boards.txt schemas",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "definitions": {
    "propertiesObjects": {
      "menu": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/menu/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/menuMenuID/permissive/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/menu/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/menuMenuID/specification/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/menu/base/object"
              },
              {
                "patternProperties": {
                  ".+": {
                    "$ref": "#/definitions/propertiesObjects/menuMenuID/permissive/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        }
      },
      "menuMenuID": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/menuMenuID/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/menuMenuID/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/menuMenuID/base/object"
              }
            ]
          }
        }
      },
      "boardID": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardID/base/object"
              },
              {
                "properties": {
                  "name": {
                    "$ref": "#/definitions/propertiesObjects/boardIDName/permissive/object"
                  },
                  "build.board": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/permissive/object"
                  },
                  "build.core": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildCore/permissive/object"
                  },
                  "hide": {
                    "$ref": "#/definitions/propertiesObjects/boardIDHide/permissive/object"
                  },
                  "menu": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenu/permissive/object"
                  },
                  "serial.disableDTR": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/permissive/object"
                  },
                  "serial.disableRTS": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/permissive/object"
                  }
                }
              },
              {
                "patternProperties": {
                  "^upload.tool(\\..+)?$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/permissive/object"
                  },
                  "upload.maximum_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/permissive/object"
                  },
                  "upload.maximum_data_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/permissive/object"
                  },
                  "upload(\\..+)?\\.protocol": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/permissive/object"
                  },
                  "upload(\\..+)?\\.use_1200bps_touch": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/permissive/object"
                  },
                  "upload(\\..+)?\\.wait_for_upload_port": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/permissive/object"
                  },
                  "^[vp]id\\.[0-9]+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDXidN/permissive/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/propertyNamesObjects/permissive/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/boardID/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardID/base/object"
              },
              {
                "properties": {
                  "name": {
                    "$ref": "#/definitions/propertiesObjects/boardIDName/specification/object"
                  },
                  "build.board": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/specification/object"
                  },
                  "build.core": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildCore/specification/object"
                  },
                  "hide": {
                    "$ref": "#/definitions/propertiesObjects/boardIDHide/specification/object"
                  },
                  "menu": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenu/specification/object"
                  },
                  "serial.disableDTR": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/specification/object"
                  },
                  "serial.disableRTS": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/specification/object"
                  }
                }
              },
              {
                "patternProperties": {
                  "^upload.tool(\\..+)?$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/specification/object"
                  },
                  "upload.maximum_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/specification/object"
                  },
                  "upload.maximum_data_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/specification/object"
                  },
                  "upload(\\..+)?\\.protocol": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/specification/object"
                  },
                  "upload(\\..+)?\\.use_1200bps_touch": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/specification/object"
                  },
                  "upload(\\..+)?\\.wait_for_upload_port": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/specification/object"
                  },
                  "^[vp]id\\.[0-9]+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDXidN/specification/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/propertyNamesObjects/specification/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/boardID/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardID/base/object"
              },
              {
                "properties": {
                  "name": {
                    "$ref": "#/definitions/propertiesObjects/boardIDName/strict/object"
                  },
                  "build.board": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/strict/object"
                  },
                  "build.core": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildCore/strict/object"
                  },
                  "hide": {
                    "$ref": "#/definitions/propertiesObjects/boardIDHide/strict/object"
                  },
                  "menu": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenu/strict/object"
                  },
                  "serial.disableDTR": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/strict/object"
                  },
                  "serial.disableRTS": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/strict/object"
                  }
                }
              },
              {
                "patternProperties": {
                  "^upload.tool(\\..+)?$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/strict/object"
                  },
                  "upload.maximum_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/strict/object"
                  },
                  "upload.maximum_data_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/strict/object"
                  },
                  "upload(\\..+)?\\.protocol": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/strict/object"
                  },
                  "upload(\\..+)?\\.use_1200bps_touch": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/strict/object"
                  },
                  "upload(\\..+)?\\.wait_for_upload_port": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/strict/object"
                  },
                  "^[vp]id\\.[0-9]+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDXidN/strict/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/propertyNamesObjects/strict/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/boardID/strict/object"
              }
            ]
          }
        }
      },
      "boardIDName": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDName/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDName/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDName/base/object"
              }
            ]
          }
        }
      },
      "boardIDBuildBoard": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/base/object"
              }
            ]
          }
        }
      },
      "boardIDBuildCore": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/base/object"
              }
            ]
          }
        }
      },
      "boardIDHide": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDHide/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDHide/base/object"
              },
              {
                "enum": [""]
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDHide/specification/object"
              }
            ]
          }
        }
      },
      "boardIDMenu": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenu/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuID/permissive/object"
                  }
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenu/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuID/specification/object"
                  }
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenu/base/object"
              },
              {
                "patternProperties": {
                  ".+": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuID/strict/object"
                  }
                }
              }
            ]
          }
        }
      },
      "boardIDMenuMenuID": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuID/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuIDOptionID/permissive/object"
                  }
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuID/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuIDOptionID/specification/object"
                  }
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuID/base/object"
              },
              {
                "patternProperties": {
                  ".+": {
                    "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuIDOptionID/strict/object"
                  }
                }
              }
            ]
          }
        }
      },
      "boardIDMenuMenuIDOptionID": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuIDOptionID/base/object"
              },
              {
                "properties": {
                  "build.board": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/permissive/object"
                  },
                  "build.core": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildCore/permissive/object"
                  },
                  "serial.disableDTR": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/permissive/object"
                  },
                  "serial.disableRTS": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/permissive/object"
                  }
                }
              },
              {
                "patternProperties": {
                  "^upload.tool(\\..+)?$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/permissive/object"
                  },
                  "upload.maximum_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/permissive/object"
                  },
                  "upload.maximum_data_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/permissive/object"
                  },
                  "upload(\\..+)?\\.protocol": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/permissive/object"
                  },
                  "upload(\\..+)?\\.use_1200bps_touch": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/permissive/object"
                  },
                  "upload(\\..+)?\\.wait_for_upload_port": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/permissive/object"
                  },
                  "^[vp]id\\.[0-9]+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDXidN/permissive/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/propertyNamesObjects/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuIDOptionID/base/object"
              },
              {
                "properties": {
                  "build.board": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/specification/object"
                  },
                  "build.core": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildCore/specification/object"
                  },
                  "serial.disableDTR": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/specification/object"
                  },
                  "serial.disableRTS": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/specification/object"
                  }
                }
              },
              {
                "patternProperties": {
                  "^upload.tool(\\..+)?$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/specification/object"
                  },
                  "upload.maximum_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/specification/object"
                  },
                  "upload.maximum_data_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/specification/object"
                  },
                  "upload(\\..+)?\\.protocol": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/specification/object"
                  },
                  "upload(\\..+)?\\.use_1200bps_touch": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/specification/object"
                  },
                  "upload(\\..+)?\\.wait_for_upload_port": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/specification/object"
                  },
                  "^[vp]id\\.[0-9]+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDXidN/specification/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/propertyNamesObjects/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDMenuMenuIDOptionID/base/object"
              },
              {
                "properties": {
                  "build.board": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildBoard/strict/object"
                  },
                  "build.core": {
                    "$ref": "#/definitions/propertiesObjects/boardIDBuildCore/strict/object"
                  },
                  "serial.disableDTR": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/strict/object"
                  },
                  "serial.disableRTS": {
                    "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/strict/object"
                  }
                }
              },
              {
                "patternProperties": {
                  "^upload.tool(\\..+)?$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/strict/object"
                  },
                  "upload.maximum_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/strict/object"
                  },
                  "upload.maximum_data_size": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/strict/object"
                  },
                  "upload(\\..+)?\\.protocol": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/strict/object"
                  },
                  "upload(\\..+)?\\.use_1200bps_touch": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/strict/object"
                  },
                  "upload(\\..+)?\\.wait_for_upload_port": {
                    "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/strict/object"
                  },
                  "^[vp]id\\.[0-9]+$": {
                    "$ref": "#/definitions/propertiesObjects/boardIDXidN/strict/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/propertyNamesObjects/strict/object"
              }
            ]
          }
        }
      },
      "boardIDSerialDisableDTR": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/enumObjects/booleanString"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableDTR/base/object"
              }
            ]
          }
        }
      },
      "boardIDSerialDisableRTS": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/enumObjects/booleanString"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDSerialDisableRTS/base/object"
              }
            ]
          }
        }
      },
      "boardIDUploadMaximumSize": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "pattern": "^([0-9]+)|({.+})$"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumSize/base/object"
              }
            ]
          }
        }
      },
      "boardIDUploadMaximumDataSize": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "pattern": "^([0-9]+)|({.+})$"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadMaximumDataSize/base/object"
              }
            ]
          }
        }
      },
      "boardIDUploadProtocol": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadProtocol/base/object"
              }
            ]
          }
        }
      },
      "boardIDUploadTool": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadTool/base/object"
              }
            ]
          }
        }
      },
      "boardIDUploadUse1200bpsTouch": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/enumObjects/booleanString"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadUse1200bpsTouch/base/object"
              }
            ]
          }
        }
      },
      "boardIDUploadWaitForUploadPort": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/enumObjects/booleanString"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDUploadWaitForUploadPort/base/object"
              }
            ]
          }
        }
      },
      "boardIDXidN": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "pattern": "^(0[xX][0-9a-fA-F]{4})|({.+})$"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDXidN/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDXidN/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boardIDXidN/base/object"
              }
            ]
          }
        }
      }
    },
    "propertyNamesObjects": {
      "base": {
        "object": {}
      },
      "permissive": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/propertyNamesObjects/base/object"
            }
          ]
        }
      },
      "specification": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/propertyNamesObjects/base/object"
            }
          ]
        }
      },
      "strict": {
        "definitions": {
          "userExtraFlagsProperties": {
            "propertyNames": {
              "not": {
                "pattern": "^compiler\\.((c)|(c\\.elf)|(S)|(cpp)|(ar)|(objcopy\\.eep)|(elf2hex))\\.extra_flags$"
              }
            }
          }
        },
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/propertyNamesObjects/base/object"
            },
            {
              "$ref": "#/definitions/propertyNamesObjects/strict/definitions/userExtraFlagsProperties"
            }
          ]
        }
      }
    },
    "requiredObjects": {
      "boardID": {
        "base": {
          "object": {
            "allOf": [
              {
                "required": ["name"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/boardID/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/boardID/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/boardID/base/object"
              }
            ]
          }
        }
      }
    }
  }
}
`)

func arduinoBoardsTxtDefinitionsSchemaJsonBytes() ([]byte, error) {
	return _arduinoBoardsTxtDefinitionsSchemaJson, nil
}

func arduinoBoardsTxtDefinitionsSchemaJson() (*asset, error) {
	bytes, err := arduinoBoardsTxtDefinitionsSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-boards-txt-definitions-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoBoardsTxtPermissiveSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-boards-txt-permissive-schema.json",
  "title": "Arduino boards.txt JSON permissive schema",
  "description": "boards.txt contains the boards definitions of Arduino platforms. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#boardstxt",
  "$comment": "For information on the boards.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "menu": {
      "$ref": "arduino-boards-txt-definitions-schema.json#/definitions/propertiesObjects/menu/permissive/object"
    }
  },
  "patternProperties": {
    "^([^m].*|m([^e].*)?|me([^n].*)?|men([^u].*)?|menu.+)$": {
      "$ref": "arduino-boards-txt-definitions-schema.json#/definitions/propertiesObjects/boardID/permissive/object"
    }
  }
}
`)

func arduinoBoardsTxtPermissiveSchemaJsonBytes() ([]byte, error) {
	return _arduinoBoardsTxtPermissiveSchemaJson, nil
}

func arduinoBoardsTxtPermissiveSchemaJson() (*asset, error) {
	bytes, err := arduinoBoardsTxtPermissiveSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-boards-txt-permissive-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoBoardsTxtSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-boards-txt-schema.json",
  "title": "Arduino boards.txt JSON schema",
  "description": "boards.txt contains the boards definitions of Arduino platforms. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#boardstxt",
  "$comment": "For information on the boards.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "menu": {
      "$ref": "arduino-boards-txt-definitions-schema.json#/definitions/propertiesObjects/menu/specification/object"
    }
  },
  "patternProperties": {
    "^([^m].*|m([^e].*)?|me([^n].*)?|men([^u].*)?|menu.+)$": {
      "$ref": "arduino-boards-txt-definitions-schema.json#/definitions/propertiesObjects/boardID/specification/object"
    }
  }
}
`)

func arduinoBoardsTxtSchemaJsonBytes() ([]byte, error) {
	return _arduinoBoardsTxtSchemaJson, nil
}

func arduinoBoardsTxtSchemaJson() (*asset, error) {
	bytes, err := arduinoBoardsTxtSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-boards-txt-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoBoardsTxtStrictSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-boards-txt-strict-schema.json",
  "title": "Arduino boards.txt JSON strict schema",
  "description": "boards.txt contains the boards definitions of Arduino platforms. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#boardstxt",
  "$comment": "For information on the boards.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "menu": {
      "$ref": "arduino-boards-txt-definitions-schema.json#/definitions/propertiesObjects/menu/strict/object"
    }
  },
  "patternProperties": {
    "^([^m].*|m([^e].*)?|me([^n].*)?|men([^u].*)?|menu.+)$": {
      "$ref": "arduino-boards-txt-definitions-schema.json#/definitions/propertiesObjects/boardID/strict/object"
    }
  }
}
`)

func arduinoBoardsTxtStrictSchemaJsonBytes() ([]byte, error) {
	return _arduinoBoardsTxtStrictSchemaJson, nil
}

func arduinoBoardsTxtStrictSchemaJson() (*asset, error) {
	bytes, err := arduinoBoardsTxtStrictSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-boards-txt-strict-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoLibraryPropertiesDefinitionsSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-library-properties-definitions-schema.json",
  "title": "Shared definitions for the Arduino library.properties schemas",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "definitions": {
    "general": {
      "patternObjects": {
        "notContainsArduino": {
          "not": {
            "pattern": "^.+[aA][rR][dD][uU][iI][nN][oO].*$"
          }
        }
      }
    },
    "propertiesObjects": {
      "name": {
        "base": {
          "definitions": {
            "patternObjects": {
              "allowedCharacters": {
                "allOf": [
                  {
                    "pattern": "^(([a-zA-Z][a-zA-Z0-9 _.\\-]*)|([0-9][a-zA-Z0-9 _.\\-]*[a-zA-Z][a-zA-Z0-9 _.\\-]*))*$"
                  }
                ]
              }
            }
          },
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              },
              {
                "$ref": "#/definitions/propertiesObjects/name/base/definitions/patternObjects/allowedCharacters"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/name/base/object"
              },
              {
                "maxLength": 63
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/name/base/object"
              },
              {
                "maxLength": 63
              },
              {
                "$comment": "Only official Arduino libraries are allowed to have names starting with \"Arduino\"",
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/notStartsWithArduino"
              }
            ]
          }
        },
        "strict": {
          "definitions": {
            "patternObjects": {
              "notContainsSpaces": {
                "not": {
                  "pattern": "^.* .*$"
                }
              },
              "notContainsSuperfluousTerms": {
                "not": {
                  "pattern": "^.*[lL][iI][bB][rR][aA][rR][yY].*$"
                }
              }
            }
          },
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/name/specification/object"
              },
              {
                "maxLength": 32
              },
              {
                "$ref": "#/definitions/propertiesObjects/name/strict/definitions/patternObjects/notContainsSpaces"
              },
              {
                "$ref": "#/definitions/general/patternObjects/notContainsArduino"
              },
              {
                "$ref": "#/definitions/propertiesObjects/name/strict/definitions/patternObjects/notContainsSuperfluousTerms"
              }
            ]
          }
        }
      },
      "version": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/version/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/relaxedSemver"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/version/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/relaxedSemver"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/version/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/semver"
              }
            ]
          }
        }
      },
      "author": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/author/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/author/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/author/specification/object"
              }
            ]
          }
        }
      },
      "maintainer": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/maintainer/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/maintainer/base/object"
              },
              {
                "$comment": "Only official Arduino libraries are allowed to have maintainer field starting with \"Arduino\"",
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/notStartsWithArduino"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/maintainer/specification/object"
              },
              {
                "$ref": "#/definitions/general/patternObjects/notContainsArduino"
              }
            ]
          }
        }
      },
      "email": {
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/maintainer/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/maintainer/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/maintainer/strict/object"
              }
            ]
          }
        }
      },
      "sentence": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/sentence/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/sentence/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/sentence/specification/object"
              }
            ]
          }
        }
      },
      "paragraph": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/paragraph/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/paragraph/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/paragraph/specification/object"
              }
            ]
          }
        }
      },
      "category": {
        "base": {
          "definitions": {
            "enumObject": {
              "enum": [
                "Display",
                "Communication",
                "Signal Input/Output",
                "Sensors",
                "Device Control",
                "Timing",
                "Data Storage",
                "Data Processing",
                "Other"
              ]
            }
          },
          "object": {}
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/category/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/category/base/object"
              },
              {
                "$ref": "#/definitions/propertiesObjects/category/base/definitions/enumObject"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/category/specification/object"
              }
            ]
          }
        }
      },
      "url": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/url/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/url/base/object"
              },
              {
                "format": "uri"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/url/specification/object"
              }
            ]
          }
        }
      },
      "architectures": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/architectures/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/architectures/base/object"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/architectures/specification/object"
              }
            ]
          }
        }
      },
      "depends": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$comment": "Based on #/definitions/propertiesObjects/name/base/definitions/patternObjects/allowedCharacters",
                "pattern": "^((((([a-zA-Z][a-zA-Z0-9 _.\\-]*)|([0-9][a-zA-Z0-9 _.\\-]*[a-zA-Z][a-zA-Z0-9 _.\\-]*))+( \\(.*\\) *)?), *)*((([a-zA-Z][a-zA-Z0-9 _.\\-]*)|([0-9][a-zA-Z0-9 _.\\-]*[a-zA-Z][a-zA-Z0-9 _.\\-]*))+( \\(.*\\) *)?))?$"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/depends/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/depends/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/depends/specification/object"
              }
            ]
          }
        }
      },
      "dot_a_linkage": {
        "base": {
          "object": {
            "allOf": [
              {
                "enum": ["true", "false"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/dot_a_linkage/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/dot_a_linkage/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/dot_a_linkage/specification/object"
              }
            ]
          }
        }
      },
      "includes": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/sentence/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/sentence/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/sentence/specification/object"
              }
            ]
          }
        }
      },
      "precompiled": {
        "base": {
          "object": {
            "allOf": [
              {
                "enum": ["true", "full", "false"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/precompiled/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/precompiled/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/precompiled/specification/object"
              }
            ]
          }
        }
      },
      "ldflags": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/ldflags/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/ldflags/base/object"
              },
              {
                "$comment": "Minimum length for a valid -l option",
                "minLength": 3
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/ldflags/specification/object"
              }
            ]
          }
        }
      }
    },
    "propertyNamesObjects": {
      "base": {
        "object": {}
      },
      "permissive": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/propertyNamesObjects/base/object"
            }
          ]
        }
      },
      "specification": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/propertyNamesObjects/base/object"
            }
          ]
        }
      },
      "strict": {
        "definitions": {
          "propertyNamesObjects": {
            "misspelledOptionalProperties": {
              "propertyNames": {
                "$comment": "Misspelled optional property names",
                "allOf": [
                  {
                    "not": {
                      "pattern": "^[dD][eE][pP][eE][nN][dD]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^D[eE][pP][eE][nN][dD][sS]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^[dD][oO][tT][_-]?[aA][_-]?[lL][iI][nN][kK][aA][gG][eE][sS]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^[dD][oO][tT]-?[aA]-?[lL][iI][nN][kK][aA][gG][eE]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^D[oO][tT]_[aA]_[lL][iI][nN][kK][aA][gG][eE]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^[iI][nN][cC][lL][uU][dD][eE]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^I[nN][cC][lL][uU][dD][eE][sS]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^[pP][rR][eE][-_]?[cC][oO][mM][pP][iI][lL][eE]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^[pP][rR][eE][-_][cC][oO][mM][pP][iI][lL][eE][dD]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^P[rR][eE][-_]?[cC][oO][mM][pP][iI][lL][eE][dD]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^[lL][dD][-_]?[fF][lL][aA][gG]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^[lL][dD][-_][fF][lL][aA][gG][sS]$"
                    }
                  },
                  {
                    "not": {
                      "pattern": "^L[dD][-_]?[fF][lL][aA][gG][sS]$"
                    }
                  }
                ]
              }
            }
          }
        },
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/propertyNamesObjects/strict/definitions/propertyNamesObjects/misspelledOptionalProperties"
            },
            {
              "$ref": "#/definitions/propertyNamesObjects/specification/object"
            }
          ]
        }
      }
    },
    "requiredObjects": {
      "base": {
        "object": {
          "allOf": [
            {
              "required": ["name", "version", "author", "sentence", "paragraph", "url"]
            }
          ]
        }
      },
      "permissive": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/requiredObjects/base/object"
            },
            {
              "$comment": "The original draft of the library specification had an \"email\" field. This was later changed to \"maintainer\" and \"email\" is now deprecated",
              "anyOf": [
                {
                  "required": ["maintainer"]
                },
                {
                  "required": ["email"]
                }
              ]
            }
          ]
        }
      },
      "specification": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/requiredObjects/base/object"
            },
            {
              "required": ["maintainer"]
            }
          ]
        }
      },
      "strict": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/requiredObjects/specification/object"
            },
            {
              "required": ["category", "architectures"]
            }
          ]
        }
      }
    }
  }
}
`)

func arduinoLibraryPropertiesDefinitionsSchemaJsonBytes() ([]byte, error) {
	return _arduinoLibraryPropertiesDefinitionsSchemaJson, nil
}

func arduinoLibraryPropertiesDefinitionsSchemaJson() (*asset, error) {
	bytes, err := arduinoLibraryPropertiesDefinitionsSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-library-properties-definitions-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoLibraryPropertiesPermissiveSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-library-properties-permissive-schema.json",
  "title": "Arduino library.properties JSON permissive schema",
  "description": "library.properties is the metadata file for Arduino libraries. This schema defines the minimum requirements for this file. See: https://arduino.github.io/arduino-cli/latest/library-specification/#library-metadata",
  "$comment": "For information on the Arduino library.properties format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "name": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/name/permissive/object"
    },
    "version": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/version/permissive/object"
    },
    "author": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/author/permissive/object"
    },
    "maintainer": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/maintainer/permissive/object"
    },
    "email": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/email/permissive/object"
    },
    "sentence": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/sentence/permissive/object"
    },
    "paragraph": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/paragraph/permissive/object"
    },
    "category": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/category/permissive/object"
    },
    "url": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/url/permissive/object"
    },
    "architectures": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/architectures/permissive/object"
    },
    "dot_a_linkage": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/dot_a_linkage/permissive/object"
    },
    "depends": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/depends/permissive/object"
    },
    "includes": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/includes/permissive/object"
    },
    "precompiled": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/precompiled/permissive/object"
    },
    "ldflags": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/ldflags/permissive/object"
    }
  },
  "allOf": [
    {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertyNamesObjects/permissive/object"
    },
    {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/requiredObjects/permissive/object"
    }
  ]
}
`)

func arduinoLibraryPropertiesPermissiveSchemaJsonBytes() ([]byte, error) {
	return _arduinoLibraryPropertiesPermissiveSchemaJson, nil
}

func arduinoLibraryPropertiesPermissiveSchemaJson() (*asset, error) {
	bytes, err := arduinoLibraryPropertiesPermissiveSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-library-properties-permissive-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoLibraryPropertiesSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-library-properties-schema.json",
  "title": "Arduino library.properties JSON schema",
  "description": "library.properties is the metadata file for Arduino libraries. See: https://arduino.github.io/arduino-cli/latest/library-specification/#library-metadata",
  "$comment": "For information on the Arduino library.properties format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "name": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/name/specification/object"
    },
    "version": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/version/specification/object"
    },
    "author": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/author/specification/object"
    },
    "maintainer": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/maintainer/specification/object"
    },
    "email": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/email/specification/object"
    },
    "sentence": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/sentence/specification/object"
    },
    "paragraph": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/paragraph/specification/object"
    },
    "category": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/category/specification/object"
    },
    "url": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/url/specification/object"
    },
    "architectures": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/architectures/specification/object"
    },
    "dot_a_linkage": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/dot_a_linkage/specification/object"
    },
    "depends": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/depends/specification/object"
    },
    "includes": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/includes/specification/object"
    },
    "precompiled": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/precompiled/specification/object"
    },
    "ldflags": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/ldflags/specification/object"
    }
  },
  "allOf": [
    {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertyNamesObjects/specification/object"
    },
    {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/requiredObjects/specification/object"
    }
  ]
}
`)

func arduinoLibraryPropertiesSchemaJsonBytes() ([]byte, error) {
	return _arduinoLibraryPropertiesSchemaJson, nil
}

func arduinoLibraryPropertiesSchemaJson() (*asset, error) {
	bytes, err := arduinoLibraryPropertiesSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-library-properties-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoLibraryPropertiesStrictSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-library-properties-strict-schema.json",
  "title": "Arduino library.properties strict JSON schema",
  "description": "library.properties is the metadata file for Arduino libraries. This schema defines the recommended format. See: https://arduino.github.io/arduino-cli/latest/library-specification/#library-metadata",
  "$comment": "For information on the Arduino library.properties format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "name": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/name/strict/object"
    },
    "version": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/version/strict/object"
    },
    "author": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/author/strict/object"
    },
    "maintainer": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/maintainer/strict/object"
    },
    "email": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/email/strict/object"
    },
    "sentence": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/sentence/strict/object"
    },
    "paragraph": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/paragraph/strict/object"
    },
    "category": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/category/strict/object"
    },
    "url": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/url/strict/object"
    },
    "architectures": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/architectures/strict/object"
    },
    "dot_a_linkage": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/dot_a_linkage/strict/object"
    },
    "depends": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/depends/strict/object"
    },
    "includes": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/includes/strict/object"
    },
    "precompiled": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/precompiled/strict/object"
    },
    "ldflags": {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertiesObjects/ldflags/strict/object"
    }
  },
  "allOf": [
    {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/propertyNamesObjects/strict/object"
    },
    {
      "$ref": "arduino-library-properties-definitions-schema.json#/definitions/requiredObjects/strict/object"
    }
  ]
}
`)

func arduinoLibraryPropertiesStrictSchemaJsonBytes() ([]byte, error) {
	return _arduinoLibraryPropertiesStrictSchemaJson, nil
}

func arduinoLibraryPropertiesStrictSchemaJson() (*asset, error) {
	bytes, err := arduinoLibraryPropertiesStrictSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-library-properties-strict-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPackageIndexDefinitionsSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-package-index-definitions-schema.json",
  "title": "Shared definitions for the Arduino Package Index schemas",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "definitions": {
    "root": {
      "base": {
        "object": {
          "type": "object",
          "required": ["packages"]
        }
      },
      "permissive": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/root/base/object"
            },
            {
              "properties": {
                "packages": {
                  "$ref": "#/definitions/propertiesObjects/packages/permissive/object"
                }
              },
              "additionalProperties": false
            }
          ]
        }
      },
      "specification": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/root/base/object"
            },
            {
              "properties": {
                "packages": {
                  "$ref": "#/definitions/propertiesObjects/packages/specification/object"
                }
              },
              "additionalProperties": false
            }
          ]
        }
      },
      "strict": {
        "object": {
          "allOf": [
            {
              "$ref": "#/definitions/root/base/object"
            },
            {
              "properties": {
                "packages": {
                  "$ref": "#/definitions/propertiesObjects/packages/strict/object"
                }
              },
              "additionalProperties": false
            }
          ]
        }
      }
    },
    "propertiesObjects": {
      "packages": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "$comment": "help property is currently undocumented, so considered optional.",
              "required": ["name", "maintainer", "websiteURL", "email", "platforms", "tools"]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/packages/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/packageName/permissive/object"
                    },
                    "maintainer": {
                      "$ref": "#/definitions/propertiesObjects/maintainer/permissive/object"
                    },
                    "websiteURL": {
                      "$ref": "#/definitions/propertiesObjects/websiteURL/permissive/object"
                    },
                    "email": {
                      "$ref": "#/definitions/propertiesObjects/email/permissive/object"
                    },
                    "help": {
                      "$ref": "#/definitions/propertiesObjects/help/permissive/object"
                    },
                    "platforms": {
                      "$ref": "#/definitions/propertiesObjects/platforms/permissive/object"
                    },
                    "tools": {
                      "$ref": "#/definitions/propertiesObjects/tools/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/packages/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/packageName/specification/object"
                    },
                    "maintainer": {
                      "$ref": "#/definitions/propertiesObjects/maintainer/specification/object"
                    },
                    "websiteURL": {
                      "$ref": "#/definitions/propertiesObjects/websiteURL/specification/object"
                    },
                    "email": {
                      "$ref": "#/definitions/propertiesObjects/email/specification/object"
                    },
                    "help": {
                      "$ref": "#/definitions/propertiesObjects/help/specification/object"
                    },
                    "platforms": {
                      "$ref": "#/definitions/propertiesObjects/platforms/specification/object"
                    },
                    "tools": {
                      "$ref": "#/definitions/propertiesObjects/tools/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/packages/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/packageName/strict/object"
                    },
                    "maintainer": {
                      "$ref": "#/definitions/propertiesObjects/maintainer/strict/object"
                    },
                    "websiteURL": {
                      "$ref": "#/definitions/propertiesObjects/websiteURL/strict/object"
                    },
                    "email": {
                      "$ref": "#/definitions/propertiesObjects/email/strict/object"
                    },
                    "help": {
                      "$ref": "#/definitions/propertiesObjects/help/strict/object"
                    },
                    "platforms": {
                      "$ref": "#/definitions/propertiesObjects/platforms/strict/object"
                    },
                    "tools": {
                      "$ref": "#/definitions/propertiesObjects/tools/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "packageName": {
        "base": {
          "object": {
            "type": "string",
            "minLength": 1
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/packageName/base/object"
          }
        },
        "specification": {
          "definitions": {
            "patternObjects": {
              "notArduino": {
                "not": {
                  "pattern": "^[aA][rR][dD][uU][iI][nN][oO]$"
                }
              }
            }
          },
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/packageName/base/object"
              },
              {
                "$comment": "Only official Arduino packages are allowed to use the \"arduino\" vendor name",
                "$ref": "#/definitions/propertiesObjects/packageName/specification/definitions/patternObjects/notArduino"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/packageName/specification/object"
          }
        }
      },
      "maintainer": {
        "base": {
          "object": {
            "type": "string",
            "minLength": 1
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/maintainer/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/maintainer/base/object"
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/maintainer/specification/object"
              },
              {
                "$comment": "Only official Arduino packages are allowed to have maintainer field starting with \"Arduino\"",
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/notStartsWithArduino"
              }
            ]
          }
        }
      },
      "websiteURL": {
        "base": {
          "object": {
            "type": "string",
            "format": "uri"
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/websiteURL/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/websiteURL/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/websiteURL/specification/object"
          }
        }
      },
      "email": {
        "base": {
          "object": {
            "type": "string"
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/email/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/email/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/email/specification/object"
          }
        }
      },
      "help": {
        "$comment": "Schema for package and platform help objects.",
        "base": {
          "object": {
            "type": "object",
            "required": ["online"]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/help/base/object"
              },
              {
                "properties": {
                  "online": {
                    "$ref": "#/definitions/propertiesObjects/online/permissive/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/help/base/object"
              },
              {
                "properties": {
                  "online": {
                    "$ref": "#/definitions/propertiesObjects/online/specification/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/help/base/object"
              },
              {
                "properties": {
                  "online": {
                    "$ref": "#/definitions/propertiesObjects/online/strict/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        }
      },
      "online": {
        "base": {
          "object": {
            "type": "string",
            "format": "uri"
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/online/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/online/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/online/specification/object"
          }
        }
      },
      "platforms": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "architecture",
                "version",
                "category",
                "help",
                "url",
                "archiveFileName",
                "checksum",
                "size",
                "boards",
                "toolsDependencies"
              ]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/platforms/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/platformName/permissive/object"
                    },
                    "architecture": {
                      "$ref": "#/definitions/propertiesObjects/architecture/permissive/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/platformVersion/permissive/object"
                    },
                    "deprecated": {
                      "$ref": "#/definitions/propertiesObjects/deprecated/permissive/object"
                    },
                    "category": {
                      "$ref": "#/definitions/propertiesObjects/category/permissive/object"
                    },
                    "help": {
                      "$ref": "#/definitions/propertiesObjects/help/permissive/object"
                    },
                    "url": {
                      "$ref": "#/definitions/propertiesObjects/archiveUrl/permissive/object"
                    },
                    "archiveFileName": {
                      "$ref": "#/definitions/propertiesObjects/archiveFileName/permissive/object"
                    },
                    "checksum": {
                      "$ref": "#/definitions/propertiesObjects/checksum/permissive/object"
                    },
                    "size": {
                      "$ref": "#/definitions/propertiesObjects/size/permissive/object"
                    },
                    "boards": {
                      "$ref": "#/definitions/propertiesObjects/boards/permissive/object"
                    },
                    "toolsDependencies": {
                      "$ref": "#/definitions/propertiesObjects/toolsDependencies/permissive/object"
                    },
                    "discoveryDependencies": {
                      "$ref": "#/definitions/propertiesObjects/discoveryDependencies/permissive/object"
                    },
                    "monitorDependencies": {
                      "$ref": "#/definitions/propertiesObjects/monitorDependencies/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/platforms/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/platformName/specification/object"
                    },
                    "architecture": {
                      "$ref": "#/definitions/propertiesObjects/architecture/specification/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/platformVersion/specification/object"
                    },
                    "deprecated": {
                      "$ref": "#/definitions/propertiesObjects/deprecated/specification/object"
                    },
                    "category": {
                      "$ref": "#/definitions/propertiesObjects/category/specification/object"
                    },
                    "help": {
                      "$ref": "#/definitions/propertiesObjects/help/specification/object"
                    },
                    "url": {
                      "$ref": "#/definitions/propertiesObjects/archiveUrl/specification/object"
                    },
                    "archiveFileName": {
                      "$ref": "#/definitions/propertiesObjects/archiveFileName/specification/object"
                    },
                    "checksum": {
                      "$ref": "#/definitions/propertiesObjects/checksum/specification/object"
                    },
                    "size": {
                      "$ref": "#/definitions/propertiesObjects/size/specification/object"
                    },
                    "boards": {
                      "$ref": "#/definitions/propertiesObjects/boards/specification/object"
                    },
                    "toolsDependencies": {
                      "$ref": "#/definitions/propertiesObjects/toolsDependencies/specification/object"
                    },
                    "discoveryDependencies": {
                      "$ref": "#/definitions/propertiesObjects/discoveryDependencies/specification/object"
                    },
                    "monitorDependencies": {
                      "$ref": "#/definitions/propertiesObjects/monitorDependencies/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/platforms/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/platformName/strict/object"
                    },
                    "architecture": {
                      "$ref": "#/definitions/propertiesObjects/architecture/strict/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/platformVersion/strict/object"
                    },
                    "deprecated": {
                      "$ref": "#/definitions/propertiesObjects/deprecated/strict/object"
                    },
                    "category": {
                      "$ref": "#/definitions/propertiesObjects/category/strict/object"
                    },
                    "help": {
                      "$ref": "#/definitions/propertiesObjects/help/strict/object"
                    },
                    "url": {
                      "$ref": "#/definitions/propertiesObjects/archiveUrl/strict/object"
                    },
                    "archiveFileName": {
                      "$ref": "#/definitions/propertiesObjects/archiveFileName/strict/object"
                    },
                    "checksum": {
                      "$ref": "#/definitions/propertiesObjects/checksum/strict/object"
                    },
                    "size": {
                      "$ref": "#/definitions/propertiesObjects/size/strict/object"
                    },
                    "boards": {
                      "$ref": "#/definitions/propertiesObjects/boards/strict/object"
                    },
                    "toolsDependencies": {
                      "$ref": "#/definitions/propertiesObjects/toolsDependencies/strict/object"
                    },
                    "discoveryDependencies": {
                      "$ref": "#/definitions/propertiesObjects/discoveryDependencies/strict/object"
                    },
                    "monitorDependencies": {
                      "$ref": "#/definitions/propertiesObjects/monitorDependencies/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "platformName": {
        "base": {
          "object": {
            "type": "string",
            "minLength": 1
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/platformName/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/platformName/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/platformName/specification/object"
          }
        }
      },
      "architecture": {
        "base": {
          "object": {
            "type": "string",
            "minLength": 1
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/architecture/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/architecture/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/architecture/specification/object"
          }
        }
      },
      "platformVersion": {
        "base": {
          "object": {
            "type": "string"
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/platformVersion/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/relaxedSemver"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/platformVersion/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/relaxedSemver"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/platformVersion/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/semver"
              }
            ]
          }
        }
      },
      "deprecated": {
        "base": {
          "object": {
            "type": "boolean"
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/deprecated/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/deprecated/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/deprecated/specification/object"
          }
        }
      },
      "category": {
        "base": {
          "object": {
            "type": "string",
            "enum": ["Contributed"]
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/category/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/category/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/category/specification/object"
          }
        }
      },
      "archiveUrl": {
        "$comment": "Schema for platform and tool archive URLs",
        "base": {
          "object": {
            "type": "string",
            "format": "uri"
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/archiveUrl/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/archiveUrl/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/archiveUrl/specification/object"
          }
        }
      },
      "archiveFileName": {
        "$comment": "Schema for platform and tool archive filenames.",
        "base": {
          "definitions": {
            "validExtensionPattern": {
              "pattern": "^.+\\.(tar\\.bz2|tar\\.gz|zip)$"
            }
          },
          "object": {
            "allOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "$ref": "#/definitions/propertiesObjects/archiveFileName/base/definitions/validExtensionPattern"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/archiveFileName/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/archiveFileName/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/archiveFileName/specification/object"
          }
        }
      },
      "checksum": {
        "$comment": "Schema for platform and tool archive checksums.",
        "base": {
          "object": {
            "type": "string",
            "pattern": "^(MD5|SHA-1|SHA-256):[0-9a-fA-F]+$"
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/checksum/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/checksum/base/object"
          }
        },
        "strict": {
          "definitions": {
            "patternObjects": {
              "usesSHA256": {
                "pattern": "^SHA-256:"
              }
            }
          },
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/checksum/specification/object"
              },
              {
                "$ref": "#/definitions/propertiesObjects/checksum/strict/definitions/patternObjects/usesSHA256"
              }
            ]
          }
        }
      },
      "size": {
        "$comment": "Schema for platform and tool archive file sizes.",
        "base": {
          "object": {
            "type": "string",
            "pattern": "^[0-9]+$"
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/size/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/size/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/size/specification/object"
          }
        }
      },
      "boards": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "required": ["name"]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boards/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/boardName/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boards/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/boardName/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/boards/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/boardName/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "boardName": {
        "base": {
          "object": {
            "type": "string",
            "minLength": 1
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/boardName/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/boardName/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/boardName/specification/object"
          }
        }
      },
      "toolsDependencies": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "required": ["packager", "name", "version"]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/permissive/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/permissive/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/toolVersion/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/specification/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/specification/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/toolVersion/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/strict/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/strict/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/toolVersion/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "discoveryDependencies": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "required": ["packager", "name"]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/discoveryDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/permissive/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/discoveryDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/specification/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/discoveryDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/strict/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "monitorDependencies": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "required": ["packager", "name"]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/monitorDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/permissive/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/monitorDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/specification/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/monitorDependencies/base/object"
              },
              {
                "items": {
                  "properties": {
                    "packager": {
                      "$ref": "#/definitions/propertiesObjects/packager/strict/object"
                    },
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "packager": {
        "base": {
          "object": {
            "type": "string",
            "minLength": 1
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/packager/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/packager/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/packager/specification/object"
          }
        }
      },
      "tools": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "required": ["name", "version", "systems"]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/tools/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/permissive/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/toolVersion/permissive/object"
                    },
                    "systems": {
                      "$ref": "#/definitions/propertiesObjects/systems/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/tools/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/specification/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/toolVersion/specification/object"
                    },
                    "systems": {
                      "$ref": "#/definitions/propertiesObjects/systems/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/tools/base/object"
              },
              {
                "items": {
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/propertiesObjects/toolName/strict/object"
                    },
                    "version": {
                      "$ref": "#/definitions/propertiesObjects/toolVersion/strict/object"
                    },
                    "systems": {
                      "$ref": "#/definitions/propertiesObjects/systems/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "toolName": {
        "base": {
          "object": {
            "type": "string",
            "minLength": 1
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/toolName/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/toolName/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/toolName/specification/object"
          }
        }
      },
      "toolVersion": {
        "base": {
          "object": {
            "type": "string"
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolVersion/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/relaxedSemver"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolVersion/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/relaxedSemver"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolVersion/base/object"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/patternObjects/semver"
              }
            ]
          }
        }
      },
      "systems": {
        "base": {
          "object": {
            "type": "array",
            "items": {
              "type": "object",
              "required": ["host", "url", "archiveFileName", "size", "checksum"]
            }
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/systems/base/object"
              },
              {
                "items": {
                  "properties": {
                    "host": {
                      "$ref": "#/definitions/propertiesObjects/host/permissive/object"
                    },
                    "url": {
                      "$ref": "#/definitions/propertiesObjects/archiveUrl/permissive/object"
                    },
                    "archiveFileName": {
                      "$ref": "#/definitions/propertiesObjects/archiveFileName/permissive/object"
                    },
                    "checksum": {
                      "$ref": "#/definitions/propertiesObjects/checksum/permissive/object"
                    },
                    "size": {
                      "$ref": "#/definitions/propertiesObjects/size/permissive/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/systems/base/object"
              },
              {
                "items": {
                  "properties": {
                    "host": {
                      "$ref": "#/definitions/propertiesObjects/host/specification/object"
                    },
                    "url": {
                      "$ref": "#/definitions/propertiesObjects/archiveUrl/specification/object"
                    },
                    "archiveFileName": {
                      "$ref": "#/definitions/propertiesObjects/archiveFileName/specification/object"
                    },
                    "checksum": {
                      "$ref": "#/definitions/propertiesObjects/checksum/specification/object"
                    },
                    "size": {
                      "$ref": "#/definitions/propertiesObjects/size/specification/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/systems/base/object"
              },
              {
                "items": {
                  "properties": {
                    "host": {
                      "$ref": "#/definitions/propertiesObjects/host/strict/object"
                    },
                    "url": {
                      "$ref": "#/definitions/propertiesObjects/archiveUrl/strict/object"
                    },
                    "archiveFileName": {
                      "$ref": "#/definitions/propertiesObjects/archiveFileName/strict/object"
                    },
                    "checksum": {
                      "$ref": "#/definitions/propertiesObjects/checksum/strict/object"
                    },
                    "size": {
                      "$ref": "#/definitions/propertiesObjects/size/strict/object"
                    }
                  },
                  "additionalProperties": false
                }
              }
            ]
          }
        }
      },
      "host": {
        "base": {
          "definitions": {
            "patternObjects": {
              "validHost": {
                "$comment": "https://github.com/arduino/arduino-cli/blob/cdbebe98f895c18146ea2607cfb706d002b01191/arduino/cores/tools.go#L144-L155",
                "anyOf": [
                  {
                    "pattern": "^all$"
                  },
                  {
                    "pattern": "^arm.*-linux-gnueabihf$"
                  },
                  {
                    "pattern": "^(aarch64|arm64)-linux-gnu$"
                  },
                  {
                    "pattern": "^x86_64-.*linux-gnu$"
                  },
                  {
                    "pattern": "^i[3456]86-.*linux-gnu$"
                  },
                  {
                    "pattern": "^i[3456]86-.*(mingw32|cygwin)$"
                  },
                  {
                    "pattern": "^(amd64|x86_64)-.*(mingw32|cygwin)$"
                  },
                  {
                    "pattern": "^x86_64-apple-darwin.*$"
                  },
                  {
                    "pattern": "^i[3456]86-apple-darwin.*$"
                  },
                  {
                    "pattern": "^arm64-apple-darwin.*$"
                  },
                  {
                    "pattern": "^arm.*-freebsd[0-9]*$"
                  },
                  {
                    "pattern": "^i?[3456]86-freebsd[0-9]*$"
                  },
                  {
                    "pattern": "^amd64-freebsd[0-9]*$"
                  }
                ]
              }
            }
          },
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/definitions/propertiesObjects/host/base/definitions/patternObjects/validHost"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/host/base/object"
          }
        },
        "specification": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/host/base/object"
          }
        },
        "strict": {
          "object": {
            "$ref": "#/definitions/propertiesObjects/host/specification/object"
          }
        }
      }
    }
  }
}
`)

func arduinoPackageIndexDefinitionsSchemaJsonBytes() ([]byte, error) {
	return _arduinoPackageIndexDefinitionsSchemaJson, nil
}

func arduinoPackageIndexDefinitionsSchemaJson() (*asset, error) {
	bytes, err := arduinoPackageIndexDefinitionsSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-package-index-definitions-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPackageIndexPermissiveSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-package-index-permissive-schema.json",
  "title": "Arduino Package Index JSON permissive schema",
  "description": "Package indexes define Arduino hardware packages. See: https://arduino.github.io/arduino-cli/latest/package_index_json-specification/. This schema defines the minimum accepted data format.",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "allOf": [
    {
      "$ref": "arduino-package-index-definitions-schema.json#/definitions/root/permissive/object"
    }
  ]
}
`)

func arduinoPackageIndexPermissiveSchemaJsonBytes() ([]byte, error) {
	return _arduinoPackageIndexPermissiveSchemaJson, nil
}

func arduinoPackageIndexPermissiveSchemaJson() (*asset, error) {
	bytes, err := arduinoPackageIndexPermissiveSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-package-index-permissive-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPackageIndexSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-package-index-schema.json",
  "title": "Arduino Package Index JSON schema",
  "description": "Package indexes define Arduino hardware packages. See: https://arduino.github.io/arduino-cli/latest/package_index_json-specification/. This schema defines the data format per the specification.",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "allOf": [
    {
      "$ref": "arduino-package-index-definitions-schema.json#/definitions/root/specification/object"
    }
  ]
}
`)

func arduinoPackageIndexSchemaJsonBytes() ([]byte, error) {
	return _arduinoPackageIndexSchemaJson, nil
}

func arduinoPackageIndexSchemaJson() (*asset, error) {
	bytes, err := arduinoPackageIndexSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-package-index-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPackageIndexStrictSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-package-index-strict-schema.json",
  "title": "Arduino Package Index JSON strict schema",
  "description": "Package indexes define Arduino hardware packages. See: https://arduino.github.io/arduino-cli/latest/package_index_json-specification/. This schema defines the best practices for the data format, above and beyond the specification.",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "allOf": [
    {
      "$ref": "arduino-package-index-definitions-schema.json#/definitions/root/strict/object"
    }
  ]
}
`)

func arduinoPackageIndexStrictSchemaJsonBytes() ([]byte, error) {
	return _arduinoPackageIndexStrictSchemaJson, nil
}

func arduinoPackageIndexStrictSchemaJson() (*asset, error) {
	bytes, err := arduinoPackageIndexStrictSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-package-index-strict-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPlatformTxtDefinitionsSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-platform-txt-definitions-schema.json",
  "title": "Shared definitions for the Arduino platform.txt schemas",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "definitions": {
    "propertiesObjects": {
      "name": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/name/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/name/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/name/base/object"
              }
            ]
          }
        }
      },
      "version": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/version/base/object"
              },
              {
                "anyOf": [
                  {
                    "$ref": "general-definitions-schema.json#/definitions/patternObjects/relaxedSemver"
                  },
                  {
                    "$ref": "general-definitions-schema.json#/definitions/patternObjects/containsPropertyReference"
                  }
                ]
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/version/base/object"
              },
              {
                "anyOf": [
                  {
                    "$ref": "general-definitions-schema.json#/definitions/patternObjects/semver"
                  },
                  {
                    "$ref": "general-definitions-schema.json#/definitions/patternObjects/containsPropertyReference"
                  }
                ]
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/version/specification/object"
              }
            ]
          }
        }
      },
      "compilerCExtraFlags": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCExtraFlags/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCExtraFlags/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCExtraFlags/base/object"
              },
              {
                "$comment": "These are default empty properties the user can override.",
                "enum": [""]
              }
            ]
          }
        }
      },
      "compilerCppExtraFlags": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCppExtraFlags/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCppExtraFlags/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCppExtraFlags/base/object"
              },
              {
                "$comment": "These are default empty properties the user can override.",
                "enum": [""]
              }
            ]
          }
        }
      },
      "compilerSExtraFlags": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerSExtraFlags/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerSExtraFlags/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerSExtraFlags/base/object"
              },
              {
                "$comment": "These are default empty properties the user can override.",
                "enum": [""]
              }
            ]
          }
        }
      },
      "compilerArExtraFlags": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerArExtraFlags/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerArExtraFlags/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerArExtraFlags/base/object"
              },
              {
                "$comment": "These are default empty properties the user can override.",
                "enum": [""]
              }
            ]
          }
        }
      },
      "compilerCElfExtraFlags": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCElfExtraFlags/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCElfExtraFlags/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/compilerCElfExtraFlags/base/object"
              },
              {
                "$comment": "These are default empty properties the user can override.",
                "enum": [""]
              }
            ]
          }
        }
      },
      "recipePreprocMacros": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipePreprocMacros/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipePreprocMacros/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipePreprocMacros/base/object"
              },
              {
                "pattern": "^.*{compiler\\.cpp\\.extra_flags}.*$"
              }
            ]
          }
        }
      },
      "recipeCOPattern": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCOPattern/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCOPattern/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCOPattern/base/object"
              },
              {
                "pattern": "^.*{compiler\\.c\\.extra_flags}.*$"
              }
            ]
          }
        }
      },
      "recipeCppOPattern": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCppOPattern/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCppOPattern/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCppOPattern/base/object"
              },
              {
                "pattern": "^.*{compiler\\.cpp\\.extra_flags}.*$"
              }
            ]
          }
        }
      },
      "recipeSOPattern": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeSOPattern/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeSOPattern/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeSOPattern/base/object"
              },
              {
                "pattern": "^.*{compiler\\.S\\.extra_flags}.*$"
              }
            ]
          }
        }
      },
      "recipeArPattern": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeArPattern/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeArPattern/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeArPattern/base/object"
              },
              {
                "pattern": "^.*{compiler\\.ar\\.extra_flags}.*$"
              }
            ]
          }
        }
      },
      "recipeCCombinePattern": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCCombinePattern/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCCombinePattern/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeCCombinePattern/base/object"
              },
              {
                "pattern": "^.*{compiler\\.c\\.elf\\.extra_flags}.*$"
              }
            ]
          }
        }
      },
      "recipeOutputTmpFile": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeOutputTmpFile/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeOutputTmpFile/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeOutputTmpFile/base/object"
              }
            ]
          }
        }
      },
      "recipeOutputSaveFile": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeOutputSaveFile/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeOutputSaveFile/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeOutputSaveFile/base/object"
              }
            ]
          }
        }
      },
      "recipeSizePattern": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeSizePattern/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeSizePattern/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/recipeSizePattern/base/object"
              },
              {
                "minLength": 1
              }
            ]
          }
        }
      },
      "pluggableDiscovery": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscovery/base/object"
              },
              {
                "properties": {
                  "required": {
                    "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequired/permissive/object"
                  }
                },
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryDiscoveryName/permissive/object"
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscovery/base/object"
              },
              {
                "properties": {
                  "required": {
                    "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequired/specification/object"
                  }
                },
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryDiscoveryName/specification/object"
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscovery/base/object"
              },
              {
                "properties": {
                  "required": {
                    "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequired/strict/object"
                  }
                },
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryDiscoveryName/strict/object"
                }
              }
            ]
          }
        }
      },
      "pluggableDiscoveryDiscoveryName": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryDiscoveryName/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/pluggableDiscoveryDiscoveryName/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryDiscoveryName/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/pluggableDiscoveryDiscoveryName/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryDiscoveryName/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/pluggableDiscoveryDiscoveryName/strict/object"
              }
            ]
          }
        }
      },
      "pluggableDiscoveryRequired": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "array"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequired/base/object"
              },
              {
                "items": {
                  "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequiredN/permissive/object"
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequired/base/object"
              },
              {
                "items": {
                  "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequiredN/specification/object"
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequired/base/object"
              },
              {
                "items": {
                  "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequiredN/strict/object"
                }
              }
            ]
          }
        }
      },
      "pluggableDiscoveryRequiredN": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/definitions/patternObjects/resourceReference"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequiredN/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequiredN/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableDiscoveryRequiredN/base/object"
              }
            ]
          }
        }
      },
      "pluggableMonitorPattern": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorPattern/base/object"
              },
              {
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableMonitorPatternProtocol/permissive/object"
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorPattern/base/object"
              },
              {
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableMonitorPatternProtocol/specification/object"
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorPattern/base/object"
              },
              {
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableMonitorPatternProtocol/strict/object"
                }
              }
            ]
          }
        }
      },
      "pluggableMonitorPatternProtocol": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorPatternProtocol/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorPatternProtocol/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorPatternProtocol/base/object"
              }
            ]
          }
        }
      },
      "pluggableMonitorRequired": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequired/base/object"
              },
              {
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequiredProtocol/permissive/object"
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequired/base/object"
              },
              {
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequiredProtocol/specification/object"
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequired/base/object"
              },
              {
                "additionalProperties": {
                  "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequiredProtocol/strict/object"
                }
              }
            ]
          }
        }
      },
      "pluggableMonitorRequiredProtocol": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/definitions/patternObjects/resourceReference"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequiredProtocol/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequiredProtocol/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/pluggableMonitorRequiredProtocol/base/object"
              }
            ]
          }
        }
      },
      "tools": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/tools/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolName/permissive/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/tools/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolName/specification/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/tools/base/object"
              },
              {
                "patternProperties": {
                  "^.+$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolName/strict/object"
                  }
                },
                "additionalProperties": false
              }
            ]
          }
        }
      },
      "toolsToolName": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolName/base/object"
              },
              {
                "properties": {
                  "upload": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/permissive/object"
                  },
                  "program": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameProgram/permissive/object"
                  },
                  "erase": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameErase/permissive/object"
                  },
                  "bootloader": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameBootloader/permissive/object"
                  }
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolName/base/object"
              },
              {
                "properties": {
                  "upload": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/specification/object"
                  },
                  "program": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameProgram/specification/object"
                  },
                  "erase": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameErase/specification/object"
                  },
                  "bootloader": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameBootloader/specification/object"
                  }
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolName/base/object"
              },
              {
                "properties": {
                  "upload": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/strict/object"
                  },
                  "program": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameProgram/strict/object"
                  },
                  "erase": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameErase/strict/object"
                  },
                  "bootloader": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameBootloader/strict/object"
                  }
                }
              }
            ]
          }
        }
      },
      "toolsToolNameUpload": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameUpload/permissive/object"
              },
              {
                "properties": {
                  "field": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadField/permissive/object"
                  }
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameUpload/specification/object"
              },
              {
                "properties": {
                  "field": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadField/specification/object"
                  }
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUpload/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameUpload/strict/object"
              },
              {
                "properties": {
                  "field": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadField/strict/object"
                  }
                }
              }
            ]
          }
        }
      },
      "toolsToolNameUploadField": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadField/base/object"
              },
              {
                "patternProperties": {
                  "^.+([^.].*|\\.([^s].*)?|\\.se([^c].*)?|\\.sec([^r].*)?|\\.secr([^e].*)?|\\.secre([^t].*)?|\\.secret.+)$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldName/permissive/object"
                  },
                  "^.+\\.secret$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldNameSecret/permissive/object"
                  }
                }
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadField/base/object"
              },
              {
                "patternProperties": {
                  "^.+([^.].*|\\.([^s].*)?|\\.se([^c].*)?|\\.sec([^r].*)?|\\.secr([^e].*)?|\\.secre([^t].*)?|\\.secret.+)$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldName/specification/object"
                  },
                  "^.+\\.secret$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldNameSecret/specification/object"
                  }
                }
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadField/base/object"
              },
              {
                "patternProperties": {
                  "^.+([^.].*|\\.([^s].*)?|\\.se([^c].*)?|\\.sec([^r].*)?|\\.secr([^e].*)?|\\.secre([^t].*)?|\\.secret.+)$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldName/strict/object"
                  },
                  "^.+\\.secret$": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldNameSecret/strict/object"
                  }
                }
              }
            ]
          }
        }
      },
      "toolsToolNameUploadFieldFieldName": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldName/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldName/base/object"
              },
              {
                "maxLength": 50
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldName/specification/object"
              }
            ]
          }
        }
      },
      "toolsToolNameUploadFieldFieldNameSecret": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "$ref": "general-definitions-schema.json#/definitions/enumObjects/booleanString"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldNameSecret/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldNameSecret/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameUploadFieldFieldNameSecret/base/object"
              }
            ]
          }
        }
      },
      "toolsToolNameProgram": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameProgram/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/permissive/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameProgram/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/specification/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameProgram/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/strict/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/strict/object"
              }
            ]
          }
        }
      },
      "toolsToolNameErase": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameErase/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/permissive/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameErase/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/specification/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameErase/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/strict/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/strict/object"
              }
            ]
          }
        }
      },
      "toolsToolNameBootloader": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameBootloader/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/permissive/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameBootloader/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/specification/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameBootloader/base/object"
              },
              {
                "properties": {
                  "params": {
                    "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/strict/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/strict/object"
              }
            ]
          }
        }
      },
      "toolsToolNameActionNameParams": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionNameParams/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionNameParams/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/toolsToolNameActionNameParams/base/object"
              },
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionNameParams/strict/object"
              }
            ]
          }
        }
      }
    },
    "dependenciesObjects": {
      "root": {
        "base": {
          "object": {
            "allOf": [
              {
                "dependencies": {
                  "compiler.optimization_flags.debug": ["compiler.optimization_flags.release"],
                  "compiler.optimization_flags.release": ["compiler.optimization_flags.debug"]
                }
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/dependenciesObjects/root/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/dependenciesObjects/root/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/dependenciesObjects/root/base/object"
              }
            ]
          }
        }
      }
    },
    "patternObjects": {
      "resourceReference": {
        "pattern": "^.+:.+$"
      }
    },
    "requiredObjects": {
      "root": {
        "base": {
          "object": {
            "allOf": [
              {
                "required": [
                  "name",
                  "version",
                  "recipe.c.o.pattern",
                  "recipe.cpp.o.pattern",
                  "recipe.S.o.pattern",
                  "recipe.ar.pattern",
                  "recipe.c.combine.pattern",
                  "recipe.output.tmp_file",
                  "recipe.output.save_file"
                ]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/root/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/root/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/root/base/object"
              },
              {
                "required": [
                  "compiler.warning_flags.none",
                  "compiler.warning_flags.default",
                  "compiler.warning_flags.more",
                  "compiler.warning_flags.all",
                  "compiler.c.extra_flags",
                  "compiler.cpp.extra_flags",
                  "compiler.S.extra_flags",
                  "compiler.ar.extra_flags",
                  "compiler.c.elf.extra_flags",
                  "recipe.size.pattern",
                  "recipe.size.regex",
                  "recipe.size.regex.data"
                ]
              }
            ]
          }
        }
      },
      "pluggableDiscoveryDiscoveryName": {
        "base": {
          "object": {
            "allOf": [
              {
                "required": ["pattern"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/pluggableDiscoveryDiscoveryName/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/pluggableDiscoveryDiscoveryName/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/pluggableDiscoveryDiscoveryName/base/object"
              }
            ]
          }
        }
      },
      "toolsToolNameActionName": {
        "base": {
          "object": {
            "allOf": [
              {
                "required": ["params", "pattern"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionName/base/object"
              }
            ]
          }
        }
      },
      "toolsToolNameActionNameParams": {
        "base": {
          "object": {
            "allOf": [
              {
                "required": ["verbose", "quiet"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionNameParams/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionNameParams/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameActionNameParams/base/object"
              }
            ]
          }
        }
      },
      "toolsToolNameUpload": {
        "base": {
          "object": {
            "allOf": [
              {
                "required": ["pattern"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/toolsToolNameUpload/base/object"
              }
            ]
          }
        }
      }
    }
  }
}
`)

func arduinoPlatformTxtDefinitionsSchemaJsonBytes() ([]byte, error) {
	return _arduinoPlatformTxtDefinitionsSchemaJson, nil
}

func arduinoPlatformTxtDefinitionsSchemaJson() (*asset, error) {
	bytes, err := arduinoPlatformTxtDefinitionsSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-platform-txt-definitions-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPlatformTxtPermissiveSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-platform-txt-permissive-schema.json",
  "title": "Arduino platform.txt JSON permissive schema",
  "description": "platform.txt contains the platform definitions of Arduino platforms. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#platformtxt",
  "$comment": "For information on the platform.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "name": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/name/permissive/object"
    },
    "version": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/version/permissive/object"
    },
    "compiler.c.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCExtraFlags/permissive/object"
    },
    "compiler.cpp.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCppExtraFlags/permissive/object"
    },
    "compiler.S.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerSExtraFlags/permissive/object"
    },
    "compiler.ar.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerArExtraFlags/permissive/object"
    },
    "compiler.c.elf.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCElfExtraFlags/permissive/object"
    },
    "recipe.preproc.macros": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipePreprocMacros/permissive/object"
    },
    "recipe.c.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCOPattern/permissive/object"
    },
    "recipe.cpp.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCppOPattern/permissive/object"
    },
    "recipe.S.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeSOPattern/permissive/object"
    },
    "recipe.ar.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeArPattern/permissive/object"
    },
    "recipe.c.combine.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCCombinePattern/permissive/object"
    },
    "recipe.output.tmp_file": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeOutputTmpFile/permissive/object"
    },
    "recipe.output.save_file": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeOutputSaveFile/permissive/object"
    },
    "recipe.size.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeSizePattern/permissive/object"
    },
    "pluggable_discovery": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableDiscovery/permissive/object"
    },
    "pluggable_monitor.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableMonitorPattern/permissive/object"
    },
    "pluggable_monitor.required": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableMonitorRequired/permissive/object"
    },
    "tools": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/tools/permissive/object"
    }
  },
  "allOf": [
    {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/dependenciesObjects/root/permissive/object"
    },
    {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/requiredObjects/root/permissive/object"
    }
  ]
}
`)

func arduinoPlatformTxtPermissiveSchemaJsonBytes() ([]byte, error) {
	return _arduinoPlatformTxtPermissiveSchemaJson, nil
}

func arduinoPlatformTxtPermissiveSchemaJson() (*asset, error) {
	bytes, err := arduinoPlatformTxtPermissiveSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-platform-txt-permissive-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPlatformTxtSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-platform-txt-schema.json",
  "title": "Arduino platform.txt JSON schema",
  "description": "platform.txt contains the platform definitions of Arduino platforms. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#platformtxt",
  "$comment": "For information on the platform.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "name": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/name/specification/object"
    },
    "version": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/version/specification/object"
    },
    "compiler.c.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCExtraFlags/specification/object"
    },
    "compiler.cpp.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCppExtraFlags/specification/object"
    },
    "compiler.S.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerSExtraFlags/specification/object"
    },
    "compiler.ar.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerArExtraFlags/specification/object"
    },
    "compiler.c.elf.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCElfExtraFlags/specification/object"
    },
    "recipe.preproc.macros": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipePreprocMacros/specification/object"
    },
    "recipe.c.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCOPattern/specification/object"
    },
    "recipe.cpp.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCppOPattern/specification/object"
    },
    "recipe.S.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeSOPattern/specification/object"
    },
    "recipe.ar.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeArPattern/specification/object"
    },
    "recipe.c.combine.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCCombinePattern/specification/object"
    },
    "recipe.output.tmp_file": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeOutputTmpFile/specification/object"
    },
    "recipe.output.save_file": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeOutputSaveFile/specification/object"
    },
    "recipe.size.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeSizePattern/specification/object"
    },
    "pluggable_discovery": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableDiscovery/specification/object"
    },
    "pluggable_monitor.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableMonitorPattern/specification/object"
    },
    "pluggable_monitor.required": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableMonitorRequired/specification/object"
    },
    "tools": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/tools/specification/object"
    }
  },
  "allOf": [
    {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/dependenciesObjects/root/specification/object"
    },
    {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/requiredObjects/root/specification/object"
    }
  ]
}
`)

func arduinoPlatformTxtSchemaJsonBytes() ([]byte, error) {
	return _arduinoPlatformTxtSchemaJson, nil
}

func arduinoPlatformTxtSchemaJson() (*asset, error) {
	bytes, err := arduinoPlatformTxtSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-platform-txt-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoPlatformTxtStrictSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-platform-txt-strict-schema.json",
  "title": "Arduino platform.txt JSON strict schema",
  "description": "platform.txt contains the platform definitions of Arduino platforms. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#platformtxt",
  "$comment": "For information on the platform.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "properties": {
    "name": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/name/strict/object"
    },
    "version": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/version/strict/object"
    },
    "compiler.c.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCExtraFlags/strict/object"
    },
    "compiler.cpp.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCppExtraFlags/strict/object"
    },
    "compiler.S.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerSExtraFlags/strict/object"
    },
    "compiler.ar.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerArExtraFlags/strict/object"
    },
    "compiler.c.elf.extra_flags": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/compilerCElfExtraFlags/strict/object"
    },
    "recipe.preproc.macros": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipePreprocMacros/strict/object"
    },
    "recipe.c.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCOPattern/strict/object"
    },
    "recipe.cpp.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCppOPattern/strict/object"
    },
    "recipe.S.o.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeSOPattern/strict/object"
    },
    "recipe.ar.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeArPattern/strict/object"
    },
    "recipe.c.combine.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeCCombinePattern/strict/object"
    },
    "recipe.output.tmp_file": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeOutputTmpFile/strict/object"
    },
    "recipe.output.save_file": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeOutputSaveFile/strict/object"
    },
    "recipe.size.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/recipeSizePattern/strict/object"
    },
    "pluggable_discovery": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableDiscovery/strict/object"
    },
    "pluggable_monitor.pattern": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableMonitorPattern/strict/object"
    },
    "pluggable_monitor.required": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/pluggableMonitorRequired/strict/object"
    },
    "tools": {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/propertiesObjects/tools/strict/object"
    }
  },
  "allOf": [
    {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/dependenciesObjects/root/strict/object"
    },
    {
      "$ref": "arduino-platform-txt-definitions-schema.json#/definitions/requiredObjects/root/strict/object"
    }
  ]
}
`)

func arduinoPlatformTxtStrictSchemaJsonBytes() ([]byte, error) {
	return _arduinoPlatformTxtStrictSchemaJson, nil
}

func arduinoPlatformTxtStrictSchemaJson() (*asset, error) {
	bytes, err := arduinoPlatformTxtStrictSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-platform-txt-strict-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoProgrammersTxtDefinitionsSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-programmers-txt-definitions-schema.json",
  "title": "Shared definitions for the Arduino programmers.txt schemas",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "definitions": {
    "propertiesObjects": {
      "programmerID": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "object"
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerID/base/object"
              },
              {
                "properties": {
                  "name": {
                    "$ref": "#/definitions/propertiesObjects/programmerIDName/permissive/object"
                  },
                  "program.tool": {
                    "$ref": "#/definitions/propertiesObjects/programmerIDProgramTool/permissive/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/programmerID/permissive/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerID/base/object"
              },
              {
                "properties": {
                  "name": {
                    "$ref": "#/definitions/propertiesObjects/programmerIDName/specification/object"
                  },
                  "program.tool": {
                    "$ref": "#/definitions/propertiesObjects/programmerIDProgramTool/specification/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/programmerID/specification/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerID/base/object"
              },
              {
                "properties": {
                  "name": {
                    "$ref": "#/definitions/propertiesObjects/programmerIDName/strict/object"
                  },
                  "program.tool": {
                    "$ref": "#/definitions/propertiesObjects/programmerIDProgramTool/strict/object"
                  }
                }
              },
              {
                "$ref": "#/definitions/requiredObjects/programmerID/strict/object"
              }
            ]
          }
        }
      },
      "programmerIDName": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerIDName/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerIDName/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerIDName/base/object"
              }
            ]
          }
        }
      },
      "programmerIDProgramTool": {
        "base": {
          "object": {
            "allOf": [
              {
                "type": "string"
              },
              {
                "minLength": 1
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerIDProgramTool/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerIDProgramTool/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/propertiesObjects/programmerIDProgramTool/base/object"
              }
            ]
          }
        }
      }
    },
    "requiredObjects": {
      "programmerID": {
        "base": {
          "object": {
            "allOf": [
              {
                "required": ["name", "program.tool"]
              }
            ]
          }
        },
        "permissive": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/programmerID/base/object"
              }
            ]
          }
        },
        "specification": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/programmerID/base/object"
              }
            ]
          }
        },
        "strict": {
          "object": {
            "allOf": [
              {
                "$ref": "#/definitions/requiredObjects/programmerID/base/object"
              }
            ]
          }
        }
      }
    }
  }
}
`)

func arduinoProgrammersTxtDefinitionsSchemaJsonBytes() ([]byte, error) {
	return _arduinoProgrammersTxtDefinitionsSchemaJson, nil
}

func arduinoProgrammersTxtDefinitionsSchemaJson() (*asset, error) {
	bytes, err := arduinoProgrammersTxtDefinitionsSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-programmers-txt-definitions-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoProgrammersTxtPermissiveSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-programmers-txt-permissive-schema.json",
  "title": "Arduino programmers.txt JSON permissive schema",
  "description": "programmers.txt contains the definitions of Arduino hardware programmers. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#programmerstxt",
  "$comment": "For information on the programmers.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "patternProperties": {
    ".+": {
      "$ref": "arduino-programmers-txt-definitions-schema.json#/definitions/propertiesObjects/programmerID/permissive/object"
    }
  }
}
`)

func arduinoProgrammersTxtPermissiveSchemaJsonBytes() ([]byte, error) {
	return _arduinoProgrammersTxtPermissiveSchemaJson, nil
}

func arduinoProgrammersTxtPermissiveSchemaJson() (*asset, error) {
	bytes, err := arduinoProgrammersTxtPermissiveSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-programmers-txt-permissive-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoProgrammersTxtSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-programmers-txt-schema.json",
  "title": "Arduino programmers.txt JSON schema",
  "description": "programmers.txt contains the definitions of Arduino hardware programmers. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#programmerstxt",
  "$comment": "For information on the programmers.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "patternProperties": {
    ".+": {
      "$ref": "arduino-programmers-txt-definitions-schema.json#/definitions/propertiesObjects/programmerID/specification/object"
    }
  }
}
`)

func arduinoProgrammersTxtSchemaJsonBytes() ([]byte, error) {
	return _arduinoProgrammersTxtSchemaJson, nil
}

func arduinoProgrammersTxtSchemaJson() (*asset, error) {
	bytes, err := arduinoProgrammersTxtSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-programmers-txt-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _arduinoProgrammersTxtStrictSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/arduino-programmers-txt-strict-schema.json",
  "title": "Arduino programmers.txt JSON strict schema",
  "description": "programmers.txt contains the definitions of Arduino hardware programmers. See: https://arduino.github.io/arduino-cli/latest/platform-specification/#programmerstxt",
  "$comment": "For information on the programmers.txt format, see https://godoc.org/github.com/arduino/go-properties-orderedmap. This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "patternProperties": {
    ".+": {
      "$ref": "arduino-programmers-txt-definitions-schema.json#/definitions/propertiesObjects/programmerID/strict/object"
    }
  }
}
`)

func arduinoProgrammersTxtStrictSchemaJsonBytes() ([]byte, error) {
	return _arduinoProgrammersTxtStrictSchemaJson, nil
}

func arduinoProgrammersTxtStrictSchemaJson() (*asset, error) {
	bytes, err := arduinoProgrammersTxtStrictSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "arduino-programmers-txt-strict-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _generalDefinitionsSchemaJson = []byte(`{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/schemas/general-definitions-schema.json",
  "title": "Shared definitions",
  "description": "Definitions for use in schemas.",
  "$comment": "This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.",
  "type": "object",
  "definitions": {
    "patternObjects": {
      "semver": {
        "$comment": "https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string with unused non-capturing group syntax removed.",
        "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-((0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(\\+([0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*))?$"
      },
      "relaxedSemver": {
        "$comment": "https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string adjusted to also allow MAJOR.MINOR, MAJOR, and with unused non-capturing group syntax removed. For details, see https://go.bug.st/relaxed-semver",
        "pattern": "^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*))?(\\.(0|[1-9]\\d*))?(-((0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(\\+([0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*))?$"
      },
      "containsPropertyReference": {
        "$comment": "https://arduino.github.io/arduino-cli/dev/platform-specification/#configuration-files-format",
        "pattern": "{.+}"
      },
      "notStartsWithArduino": {
        "not": {
          "pattern": "^[aA][rR][dD][uU][iI][nN][oO].*$"
        }
      }
    },
    "enumObjects": {
      "booleanString": {
        "enum": ["true", "false"]
      }
    }
  }
}
`)

func generalDefinitionsSchemaJsonBytes() ([]byte, error) {
	return _generalDefinitionsSchemaJson, nil
}

func generalDefinitionsSchemaJson() (*asset, error) {
	bytes, err := generalDefinitionsSchemaJsonBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "general-definitions-schema.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
		}
		return a.bytes, nil
	}
	return nil, fmt.Errorf("Asset %s not found", name)
}

// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
	a, err := Asset(name)
	if err != nil {
		panic("asset: Asset(" + name + "): " + err.Error())
	}

	return a
}

// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
		}
		return a.info, nil
	}
	return nil, fmt.Errorf("AssetInfo %s not found", name)
}

// AssetNames returns the names of the assets.
func AssetNames() []string {
	names := make([]string, 0, len(_bindata))
	for name := range _bindata {
		names = append(names, name)
	}
	return names
}

// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
	"arduino-boards-txt-definitions-schema.json":         arduinoBoardsTxtDefinitionsSchemaJson,
	"arduino-boards-txt-permissive-schema.json":          arduinoBoardsTxtPermissiveSchemaJson,
	"arduino-boards-txt-schema.json":                     arduinoBoardsTxtSchemaJson,
	"arduino-boards-txt-strict-schema.json":              arduinoBoardsTxtStrictSchemaJson,
	"arduino-library-properties-definitions-schema.json": arduinoLibraryPropertiesDefinitionsSchemaJson,
	"arduino-library-properties-permissive-schema.json":  arduinoLibraryPropertiesPermissiveSchemaJson,
	"arduino-library-properties-schema.json":             arduinoLibraryPropertiesSchemaJson,
	"arduino-library-properties-strict-schema.json":      arduinoLibraryPropertiesStrictSchemaJson,
	"arduino-package-index-definitions-schema.json":      arduinoPackageIndexDefinitionsSchemaJson,
	"arduino-package-index-permissive-schema.json":       arduinoPackageIndexPermissiveSchemaJson,
	"arduino-package-index-schema.json":                  arduinoPackageIndexSchemaJson,
	"arduino-package-index-strict-schema.json":           arduinoPackageIndexStrictSchemaJson,
	"arduino-platform-txt-definitions-schema.json":       arduinoPlatformTxtDefinitionsSchemaJson,
	"arduino-platform-txt-permissive-schema.json":        arduinoPlatformTxtPermissiveSchemaJson,
	"arduino-platform-txt-schema.json":                   arduinoPlatformTxtSchemaJson,
	"arduino-platform-txt-strict-schema.json":            arduinoPlatformTxtStrictSchemaJson,
	"arduino-programmers-txt-definitions-schema.json":    arduinoProgrammersTxtDefinitionsSchemaJson,
	"arduino-programmers-txt-permissive-schema.json":     arduinoProgrammersTxtPermissiveSchemaJson,
	"arduino-programmers-txt-schema.json":                arduinoProgrammersTxtSchemaJson,
	"arduino-programmers-txt-strict-schema.json":         arduinoProgrammersTxtStrictSchemaJson,
	"general-definitions-schema.json":                    generalDefinitionsSchemaJson,
}

// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
//     data/
//       foo.txt
//       img/
//         a.png
//         b.png
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
	node := _bintree
	if len(name) != 0 {
		cannonicalName := strings.Replace(name, "\\", "/", -1)
		pathList := strings.Split(cannonicalName, "/")
		for _, p := range pathList {
			node = node.Children[p]
			if node == nil {
				return nil, fmt.Errorf("Asset %s not found", name)
			}
		}
	}
	if node.Func != nil {
		return nil, fmt.Errorf("Asset %s not found", name)
	}
	rv := make([]string, 0, len(node.Children))
	for childName := range node.Children {
		rv = append(rv, childName)
	}
	return rv, nil
}

type bintree struct {
	Func     func() (*asset, error)
	Children map[string]*bintree
}

var _bintree = &bintree{nil, map[string]*bintree{
	"arduino-boards-txt-definitions-schema.json":         &bintree{arduinoBoardsTxtDefinitionsSchemaJson, map[string]*bintree{}},
	"arduino-boards-txt-permissive-schema.json":          &bintree{arduinoBoardsTxtPermissiveSchemaJson, map[string]*bintree{}},
	"arduino-boards-txt-schema.json":                     &bintree{arduinoBoardsTxtSchemaJson, map[string]*bintree{}},
	"arduino-boards-txt-strict-schema.json":              &bintree{arduinoBoardsTxtStrictSchemaJson, map[string]*bintree{}},
	"arduino-library-properties-definitions-schema.json": &bintree{arduinoLibraryPropertiesDefinitionsSchemaJson, map[string]*bintree{}},
	"arduino-library-properties-permissive-schema.json":  &bintree{arduinoLibraryPropertiesPermissiveSchemaJson, map[string]*bintree{}},
	"arduino-library-properties-schema.json":             &bintree{arduinoLibraryPropertiesSchemaJson, map[string]*bintree{}},
	"arduino-library-properties-strict-schema.json":      &bintree{arduinoLibraryPropertiesStrictSchemaJson, map[string]*bintree{}},
	"arduino-package-index-definitions-schema.json":      &bintree{arduinoPackageIndexDefinitionsSchemaJson, map[string]*bintree{}},
	"arduino-package-index-permissive-schema.json":       &bintree{arduinoPackageIndexPermissiveSchemaJson, map[string]*bintree{}},
	"arduino-package-index-schema.json":                  &bintree{arduinoPackageIndexSchemaJson, map[string]*bintree{}},
	"arduino-package-index-strict-schema.json":           &bintree{arduinoPackageIndexStrictSchemaJson, map[string]*bintree{}},
	"arduino-platform-txt-definitions-schema.json":       &bintree{arduinoPlatformTxtDefinitionsSchemaJson, map[string]*bintree{}},
	"arduino-platform-txt-permissive-schema.json":        &bintree{arduinoPlatformTxtPermissiveSchemaJson, map[string]*bintree{}},
	"arduino-platform-txt-schema.json":                   &bintree{arduinoPlatformTxtSchemaJson, map[string]*bintree{}},
	"arduino-platform-txt-strict-schema.json":            &bintree{arduinoPlatformTxtStrictSchemaJson, map[string]*bintree{}},
	"arduino-programmers-txt-definitions-schema.json":    &bintree{arduinoProgrammersTxtDefinitionsSchemaJson, map[string]*bintree{}},
	"arduino-programmers-txt-permissive-schema.json":     &bintree{arduinoProgrammersTxtPermissiveSchemaJson, map[string]*bintree{}},
	"arduino-programmers-txt-schema.json":                &bintree{arduinoProgrammersTxtSchemaJson, map[string]*bintree{}},
	"arduino-programmers-txt-strict-schema.json":         &bintree{arduinoProgrammersTxtStrictSchemaJson, map[string]*bintree{}},
	"general-definitions-schema.json":                    &bintree{generalDefinitionsSchemaJson, map[string]*bintree{}},
}}

// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
	data, err := Asset(name)
	if err != nil {
		return err
	}
	info, err := AssetInfo(name)
	if err != nil {
		return err
	}
	err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
	if err != nil {
		return err
	}
	err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
	if err != nil {
		return err
	}
	return nil
}

// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
	children, err := AssetDir(name)
	// File
	if err != nil {
		return RestoreAsset(dir, name)
	}
	// Dir
	for _, child := range children {
		err = RestoreAssets(dir, filepath.Join(name, child))
		if err != nil {
			return err
		}
	}
	return nil
}

func _filePath(dir, name string) string {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
