{
	"type": "object",
	"description": "Предустановки определяют генератор и каталог сборки, а также при необходимости список переменных и других аргументов, передаваемых CMake.",
	"required": [
		"version"
	],
	"properties": {
		"version": {
			"type": "integer",
			"description": "Обязательное целое число, представляющее версию схемы JSON."
		},
		"cmakeMinimumRequired": {
			"type": "object",
			"description": "Необязательный объект, представляющий минимальную версию CMake, необходимую для сборки этого проекта.",
			"properties": {
				"major": {
					"type": "integer",
					"description": "Необязательное целое число, представляющее основной номер версии."
				},
				"minor": {
					"type": "integer",
					"description": "Необязательное целое число, представляющее дополнительный номер версии."
				},
				"patch": {
					"type": "integer",
					"description": "Необязательное целое число, представляющее номер версии исправления."
				}
			},
			"additionalProperties": false
		},
		"configurePresets": {
			"type": "array",
			"description": "Необязательный массив объектов предустановок настройки.",
			"items": {
				"type": "object",
				"description": "Объект предустановки настройки.",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе --preset. Не допускается наличие двух предустановок в объединении CMakePresets.json и CMakeUserPresets.json с одинаковым именем в одном и том же каталоге.",
						"minLength": 1
					},
					"hidden": {
						"type": "boolean",
						"description": "Необязательное логическое значение, указывающее, следует ли скрыть предустановку. Если предустановка скрыта, она не может использоваться в аргументе --preset=, не будет отображаться в интерфейсе CMake и не должна иметь допустимый генератор или каталог binaryDir даже в результате наследования. Скрытые предустановки предназначены для использования в качестве основы для других предустановок, наследуемых с помощью поля inherits."
					},
					"inherits": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
								"minLength": 1
							},
							{
								"type": "array",
								"description": "Необязательный массив строк, представляющих имена предустановок, от которых осуществляется наследование. Предустановка будет наследовать все поля в предустановках inherits по умолчанию (за исключением полей name, hidden, inherits, description и displayName), но при необходимости может переопределять их. Если в нескольких предустановках inherits представлены конфликтующие значения для одного и того же поля, будет выбрана более ранняя предустановка в списке inherits. Предустановки в файле CMakePresets.json не могут наследоваться от предустановок в файле CMakeUserPresets.json.",
								"items": {
									"type": "string",
									"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
									"minLength": 1
								}
							}
						]
					},
					"vendor": {
						"type": "object",
						"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако ключи должны представлять доменное имя поставщика, за которым должен следовать путь, отделенный символом \"/\". Например, в примере IDE 1.0 можно использовать \"example.com/ExampleIDE/1.0\". Значение каждого поля может быть любым, выбранным поставщиком, хотя как правило используется сопоставление.",
						"properties": {
							"microsoft.com/VisualStudioSettings/CMake/1.0": {
								"type": "object",
								"description": "Необязательный объект, представляющий объект поставщика параметров Visual Studio",
								"properties": {
									"hostOS": {
										"anyOf": [
											{
												"type": "string",
												"description": "Необязательная строка, представляющая имя ОС узла. Допустимые значения: \"Windows\", \"Linux\" и \"macOS\".",
												"enum": [
													"Windows",
													"Linux",
													"macOS"
												]
											},
											{
												"type": "array",
												"description": "Массив поддерживаемых операционных систем узла. Этот ключ используется Visual Studio и Visual Studio Code для скрытия предустановок, которые не применяются к активной целевой системе или ОС узла. Допустимые значения: Windows, Linux и macOS.",
												"items": {
													"type": "string",
													"description": "Необязательная строка, представляющая имя ОС узла. Допустимые значения: \"Windows\", \"Linux\" и \"macOS\".",
													"enum": [
														"Windows",
														"Linux",
														"macOS"
													]
												}
											}
										]
									},
									"intelliSenseMode": {
										"type": "string",
										"description": "Необязательный ключ, указывающий предпочтительный режим IntelliSense. Режим используется для определения информации IntelliSense в Visual Studio и Visual Studio Code.",
										"enum": [
											"windows-msvc-x86",
											"windows-msvc-x64",
											"windows-msvc-arm",
											"windows-msvc-arm64",
											"android-clang-x86",
											"android-clang-x64",
											"android-clang-arm",
											"android-clang-arm64",
											"ios-clang-x86",
											"ios-clang-x64",
											"ios-clang-arm",
											"ios-clang-arm64",
											"windows-clang-x86",
											"windows-clang-x64",
											"windows-clang-arm",
											"windows-clang-arm64",
											"linux-gcc-x86",
											"linux-gcc-x64",
											"linux-gcc-arm"
										]
									},
									"intelliSenseOptions": {
										"type": "object",
										"description": "Необязательный объект, используемый для настройки расширенных параметров IntelliSense.",
										"properties": {
											"useCompilerDefaults": {
												"type": "boolean",
												"default": true,
												"description": "Указывает, следует ли использовать определения компилятора по умолчанию и пути поиска включаемых файлов для IntelliSense. Значение false для этого параметра следует задавать только в том случае, если используемые компиляторы не поддерживают аргументы в стиле gcc."
											},
											"additionalCompilerArgs": {
												"anyOf": [
													{
														"type": "string",
														"default": "empty"
													},
													{
														"type": "array",
														"description": "Массив дополнительных параметров для управления IntelliSense в Visual Studio.",
														"items": {
															"type": "string"
														}
													}
												]
											}
										}
									},
									"enableMicrosoftCodeAnalysis": {
										"type": "boolean",
										"description": "Включить анализ кода Майкрософт в Visual Studio при сборке с использованием cl или clang-cl."
									},
									"codeAnalysisRuleset": {
										"type": "string",
										"description": "Набор правил, используемый при анализе кода Майкрософт в Visual Studio. Можно указать путь к файлу набора правил или имя файла набора правил, установленного с Visual Studio."
									},
									"enableClangTidyCodeAnalysis": {
										"type": "boolean",
										"description": "Включить анализ кода clang-tidy в Visual Studio при сборке с использованием clang-cl."
									},
									"clangTidyChecks": {
										"type": "string",
										"description": "Разделенный запятыми список предупреждений, передаваемых clang-tidy при выполнении анализа кода clang-tidy в Visual Studio. Допускаются подстановочные знаки. При указании префикса \"-\" проверки будут отключены."
									},
									"cacheRoot": {
										"type": "string",
										"description": "Путь к кэшу CMake. Этот каталог должен содержать существующий файл CMakeCache.txt. Этот ключ поддерживается только сценарием \"Открытие существующего кэша\" в Visual Studio."
									},
									"cmakeGenerateCommand": {
										"type": "string",
										"description": "Средство командной строки для создания кэша CMake, заданное в виде программы командной строки с аргументами, например \"gencache.bat debug\". Эта команда будет выполняться из оболочки в указанной среде предустановки при создании кэша. Этот ключ поддерживается только сценарием \"Открытие существующего кэша\" в Visual Studio."
									}
								}
							},
							"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
								"type": "object",
								"description": "Необязательный объект, представляющий объект поставщика удаленных параметров Visual Studio.",
								"properties": {
									"sourceDir": {
										"type": "string",
										"default": "$env{HOME}/.vs/${sourceDirName}",
										"description": "Путь к каталогу в удаленной системе или в установке WSL2, в который будет скопирован проект."
									},
									"copySources": {
										"type": "boolean",
										"default": "true",
										"description": "Если значение равно true, Visual Studio скопирует исходные файлы из Windows в удаленную систему. Если вы хотите управлять синхронизацией самостоятельно, установите значение false."
									},
									"copySourcesOptions": {
										"type": "object",
										"description": "Объект параметров, относящийся к копированию исходных файлов из Windows в удаленную систему.",
										"properties": {
											"exclusionList": {
												"type": "array",
												"default": "[ \".vs\", \".git\", \"out\"]",
												"description": "Список путей, исключаемых при копировании исходных файлов в удаленную систему. Путь может быть именем файла или каталога или относительным путем для корневого каталога копии.",
												"items": {
													"type": "string"
												}
											},
											"method": {
												"type": "string",
												"default": "rsync",
												"description": "Метод, используемый для копирования исходных файлов в удаленную систему. Допустимые значения: \"rsync\" и \"sftp\"."
											},
											"concurrentCopies": {
												"type": "integer",
												"default": 5,
												"description": "Число одновременных копий, используемых при синхронизации источников с удаленной системой."
											},
											"outputVerbosity": {
												"type": "string",
												"default": "Normal",
												"description": "Уровень детализации операций копирования исходных файлов в удаленную систему. Допустимые значения: \"Обычный\", \"Подробный\" и \"Диагностика\".",
												"enum": [
													"Normal",
													"Verbose",
													"Diagnostic"
												]
											}
										}
									},
									"rsyncCommandArgs": {
										"type": "array",
										"default": "[\"-t\", \"--delete\", \"--delete-excluded\"]",
										"description": "Список дополнительных аргументов командной строки, передаваемых в rsync.",
										"items": {
											"type": "string"
										}
									},
									"copyBuildOutput": {
										"type": "boolean",
										"default": false,
										"description": "Указывает, следует ли копировать выходные данные сборки из удаленной системы обратно в Windows."
									},
									"copyOptimizations": {
										"type": "object",
										"description": "Объект параметров, относящийся к оптимизации копирования исходных файлов.",
										"properties": {
											"maxSmallChange": {
												"type": "integer",
												"default": 10,
												"description": "Максимальное количество файлов для копирования с помощью sftp вместо rsync."
											},
											"useOptimizations": {
												"type": "string",
												"default": "RsyncAndSftp",
												"description": "Выберите один из следующих вариантов: копирование без оптимизации (\"None\"), только оптимизация rsync (\"RsyncOnly\") или оптимизация rsync и sftp (\"RsyncAndSftp\").",
												"enum": [
													"None",
													"RsyncOnly",
													"RsyncAndSftp"
												]
											},
											"rsyncSingleDirectoryCommandArgs": {
												"type": "array",
												"default": "[\"-t\", \"-d\"]",
												"description": "Список дополнительных аргументов командной строки, передаваемых в rsync при копировании содержимого одного каталога в удаленную систему.",
												"items": {
													"type": "string"
												}
											}
										}
									},
									"copyAdditionalIncludeDirectoriesList": {
										"type": "array",
										"default": "[]",
										"description": "Список путей к удаленным каталогам заголовков, которые будут скопированы локально для IntelliSense.",
										"items": {
											"type": "string"
										}
									},
									"copyExcludeDirectoriesList": {
										"type": "array",
										"default": "[]",
										"description": "Список путей к удаленным каталогам заголовков, которые не будут скопированы локально для IntelliSense.",
										"items": {
											"type": "string"
										}
									},
									"forceWSL1Toolset": {
										"type": "boolean",
										"default": false,
										"description": "Если значение равно true, Visual Studio всегда будет использовать набор инструментов WSL1 при нацеливании на WSL из Visual Studio. Набор инструментов WSL1 выполняет все команды локально и использует диски Windows, подключенные к папке /mnt, для доступа к локальным исходным файлам из WSL. При использовании WSL2 эти операции могут выполняться медленнее."
									}
								}
							}
						}
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"generator": {
						"type": "string",
						"description": "Необязательная строка, представляющая генератор, используемый для предустановки. Если генератор не указан, он должен наследоваться из предустановки inherits (если эта предустановка не скрыта). Обратите внимание, что в отличие от аргумента командной строки -G для генераторов Visual Studio имя платформы не может быть включено в имя генератора. Вместо этого используйте поле архитектуры."
					},
					"architecture": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая платформу для генераторов, которые ее поддерживают."
							},
							{
								"type": "object",
								"description": "Необязательный объект, представляющий платформу для генераторов, которые ее поддерживают.",
								"properties": {
									"value": {
										"type": "string",
										"description": "Необязательная строка, представляющая значение."
									},
									"strategy": {
										"type": "string",
										"description": "Необязательная строка, сообщающая CMake, как обрабатывать поле. Допустимые значения: \"set\" — установить соответствующее значение. Это приведет к ошибке для генераторов, которые не поддерживают соответствующее поле. \"external\" — не устанавливать значение, даже если генератор поддерживает его. Это удобно, например, в том случае, если предустановка использует генератор Ninja, а интегрированной среде разработки известно, как настроить среду Visual C++, на основе содержимого полей \"Архитектура\" и \"Набор инструментов\". В этом случае CMake проигнорирует поле, но интегрированная среда разработки может использовать его для настройки среды перед вызовом CMake.",
										"enum": [
											"set",
											"external"
										]
									}
								},
								"additionalProperties": false
							}
						]
					},
					"toolset": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая набор инструментов для генераторов, которые его поддерживают."
							},
							{
								"type": "object",
								"description": "Необязательный объект, представляющий набор инструментов для генераторов, которые его поддерживают.",
								"properties": {
									"value": {
										"type": "string",
										"description": "Необязательная строка, представляющая значение."
									},
									"strategy": {
										"type": "string",
										"description": "Необязательная строка, сообщающая CMake, как обрабатывать поле. Допустимые значения: \"set\" — установить соответствующее значение. Это приведет к ошибке для генераторов, которые не поддерживают соответствующее поле. \"external\" — не устанавливать значение, даже если генератор поддерживает его. Это удобно, например, в том случае, если предустановка использует генератор Ninja, а интегрированной среде разработки известно, как настроить среду Visual C++, на основе содержимого полей \"Архитектура\" и \"Набор инструментов\". В этом случае CMake проигнорирует поле, но интегрированная среда разработки может использовать его для настройки среды перед вызовом CMake.",
										"enum": [
											"set",
											"external"
										]
									}
								},
								"additionalProperties": false
							}
						]
					},
					"binaryDir": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к выходному двоичному каталогу. Это поле поддерживает раскрытие макросов. Если указан относительный путь, он вычисляется относительно исходного каталога. Если каталог binaryDir не указан, он должен наследоваться от предустановки inherits (если эта предустановка не скрыта)."
					},
					"cmakeExecutable": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к исполняемому файлу CMake для этой предустановки. Это значение зарезервировано для использования средами IDE и не используется CMake. Среды IDE, в которых используется это поле, должны раскрыть все макросы, входящие в состав строки."
					},
					"cacheVariables": {
						"type": "object",
						"description": "Необязательное сопоставление переменных кэша. Ключ используется в качестве имени переменной (и не должен быть пустым). Переменные кэша наследуются с помощью поля inherits, и переменные предустановки будут представлять собой объединение собственных переменных кэша и переменных кэша всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования.",
						"properties": {
							"CMAKE_C_COMPILER": {
								"anyOf": [
									{
										"type": "string",
										"description": "Компилятор, используемый для C."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_CXX_COMPILER": {
								"anyOf": [
									{
										"type": "string",
										"description": "Компилятор, используемый для C++."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_INSTALL_PREFIX": {
								"anyOf": [
									{
										"type": "string",
										"description": "Каталог установки, используемый CMake. Для предустановок версии 3 и более новых версий используйте вместо этого элемента свойство installDir."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_TOOLCHAIN_FILE": {
								"anyOf": [
									{
										"type": "string",
										"description": "Файл цепочки инструментов, переданный в CMake. Для предустановок версии 3 и более новых версий используйте вместо этого элемента свойство toolchainFile."
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									}
								]
							},
							"CMAKE_BUILD_TYPE": {
								"description": "Задает тип сборки в генераторах с одной конфигурацией.",
								"anyOf": [
									{
										"type": "string",
										"enum": [
											"Debug",
											"Release",
											"RelWithDebInfo",
											"MinSizeRel"
										]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string"
											},
											"value": {
												"type": "string"
											}
										},
										"additionalProperties": false
									},
									{
										"type": "string"
									},
									{
										"type": "null",
										"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
									}
								]
							}
						},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "boolean",
									"description": "Логическое значение, представляющее значение переменной. Эквивалентно \"TRUE\" или \"FALSE\"."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной (и поддерживающая раскрытие макросов)."
								},
								{
									"type": "object",
									"description": "Объект, представляющий тип и значение переменной.",
									"properties": {
										"type": {
											"type": "string",
											"description": "Необязательная строка, представляющая тип переменной. Допустимые типы: BOOL, FILEPATH, PATH, STRING и INTERNAL."
										},
										"value": {
											"anyOf": [
												{
													"type": "boolean",
													"description": "Обязательное логическое значение, представляющее значение переменной. Эквивалентно \"TRUE\" или \"FALSE\"."
												},
												{
													"type": "string",
													"description": "Обязательная строка, представляющая значение переменной. Это поле поддерживает раскрытие макросов."
												}
											]
										}
									},
									"required": [
										"value"
									],
									"additionalProperties": false
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"environment": {
						"type": "object",
						"description": "Необязательное сопоставление переменных среды. Ключ используется в качестве имени переменной (и не должен быть пустым). Каждая переменная устанавливается независимо от того, было ли ее значение присвоено средой процесса. Это поле поддерживает раскрытие макросов, и переменные среды в этом сопоставлении могут ссылаться друг на друга и могут указываться в любом порядке, если такие ссылки не приводят к появлению цикла (например, если переменная среды ENV_1 равна $env{ENV_2}, то ENV_2 не может быть равна $env{ENV_1}). Переменные среды наследуются с помощью поля inherits, и среда предустановки будет представлять собой объединение собственной среды и сред всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования. Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки.",
						"properties": {},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной."
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"warnings": {
						"type": "object",
						"description": "Необязательный объект, указывающий предупреждения.",
						"properties": {
							"dev": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Wdev или -Wno-dev в командной строке. Не может иметь значение false, если для параметра errors.dev установлено значение true."
							},
							"deprecated": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Wdeprecated или -Wno-deprecated в командной строке. Не может иметь значение false, если для параметра errors.deprecated установлено значение true."
							},
							"uninitialized": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --warn-uninitialized в командной строке."
							},
							"unusedCli": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения false эквивалентна передаче аргумента --no-warn-unused-cli в командной строке."
							},
							"systemVars": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --check-system-vars в командной строке."
							}
						},
						"additionalProperties": false
					},
					"errors": {
						"type": "object",
						"description": "Необязательный объект, указывающий ошибки.",
						"properties": {
							"dev": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Werror=dev или -Wno-error=dev в командной строке. Не может иметь значение true, если для параметра warnings.dev установлено значение false."
							},
							"deprecated": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Эквивалентно передаче аргумента -Werror=deprecated или -Wno-error=deprecated в командной строке. Не может иметь значение true, если для параметра warnings.deprecated установлено значение false."
							}
						},
						"additionalProperties": false
					},
					"debug": {
						"type": "object",
						"description": "Необязательный объект, задающий параметры отладки.",
						"properties": {
							"output": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --debug-output в командной строке."
							},
							"tryCompile": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --debug-trycompile в командной строке."
							},
							"find": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Установка значения true эквивалентна передаче аргумента --debug-find в командной строке."
							}
						},
						"additionalProperties": false
					},
					"installDir": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к каталогу установки. Это поле поддерживает расширение макросов. Если указан относительный путь, он вычисляется относительно исходного каталога. Поддерживается в версии 3."
					},
					"toolchainFile": {
						"type": "string",
						"description": "Необязательная строка, представляющая путь к файлу цепочки инструментов. Это поле поддерживает расширение макросов. Если указан относительный путь, он вычисляется относительно каталога сборки, а если файл не найден — относительно исходного каталога. Поддерживается в версии 3."
					},
					"condition": {
						"$ref": "#/definitions/topCondition"
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"buildPresets": {
			"type": "array",
			"description": "Необязательный массив, включающий объекты предустановок сборки. Используется для указания аргументов cmake --build. Доступно в версии 2 и более поздних версиях.",
			"items": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе --preset. Не допускается наличие двух предустановок (настройки, сборки или тестирования) в объединении файлов CMakePresets.json и CMakeUserPresets.json с одинаковым именем в одном и том же каталоге.",
						"minLength": 1
					},
					"hidden": {
						"type": "boolean",
						"description": "Необязательное логическое значение, указывающее, следует ли скрыть предустановку. Если предустановка скрыта, она не может использоваться в аргументе --preset, не будет отображаться в интерфейсе CMake и не должна иметь допустимого параметра configurePreset даже в результате наследования. Скрытые предустановки предназначены для использования в качестве основы для других предустановок, наследуемых с помощью поля inherits."
					},
					"inherits": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая имя предустановки сборки, от которой осуществляется наследование.",
								"minLength": 1
							},
							{
								"type": "array",
								"description": "Необязательный массив строк, представляющих имена предустановок сборки, от которых осуществляется наследование. Предустановка будет наследовать все поля в предустановках inherits по умолчанию (за исключением полей name, hidden, inherits, description и displayName), но при необходимости может переопределять их. Если в нескольких предустановках inherits представлены конфликтующие значения для одного и того же поля, будет выбрана более ранняя предустановка в списке inherits. Предустановки в файле CMakePresets.json не могут наследоваться от предустановок в файле CMakeUserPresets.json.",
								"items": {
									"type": "string",
									"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
									"minLength": 1
								}
							}
						]
					},
					"configurePreset": {
						"type": "string",
						"description": "Необязательная строка, указывающая имя предустановки настройки, которую необходимо связать с этой предустановкой сборки. Если параметр configurePreset не указан, он должен наследоваться от предустановки inherits (если эта предустановка не скрыта). Каталог дерева сборки выводится из предустановки настройки.",
						"minLength": 1
					},
					"vendor": {
						"type": "object",
						"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако для этого поля должны использоваться те же соглашения, что и для поля поставщика корневого уровня. Если поставщики используют свои собственные поля для каждой предустановки, они должны применять наследование по мере необходимости.",
						"properties": {}
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"inheritConfigureEnvironment": {
						"type": "boolean",
						"description": "Необязательное логическое значение, по умолчанию равное true. Если значение равно true, переменные среды из связанной предустановки настройки наследуются после всех унаследованных сред предустановки сборки, но перед переменными среды, явно заданными в этой предустановке сборки."
					},
					"environment": {
						"type": "object",
						"description": "Необязательное сопоставление переменных среды. Ключ используется в качестве имени переменной (и не должен быть пустым). Каждая переменная устанавливается независимо от того, было ли ее значение присвоено средой процесса. Это поле поддерживает раскрытие макросов, и переменные среды в этом сопоставлении могут ссылаться друг на друга и могут указываться в любом порядке, если такие ссылки не приводят к появлению цикла (например, если переменная среды ENV_1 равна $env{ENV_2}, то ENV_2 не может быть равна $env{ENV_1}). Переменные среды наследуются с помощью поля inherits, и среда предустановки будет представлять собой объединение собственной среды и сред всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования. Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки.",
						"properties": {},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной."
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"jobs": {
						"type": "integer",
						"description": "Необязательное целое число. Эквивалентно передаче параметра --parallel или -j в командной строке."
					},
					"targets": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка. Эквивалентна передаче параметра --target или -t в командной строке. Поставщики могут игнорировать свойство targets или скрыть предустановки сборки, в которых явно указываются целевые объекты."
							},
							{
								"type": "array",
								"description": "Необязательный массив строк. Эквивалентен передаче параметра --target или -t в командной строке. Поставщики могут игнорировать свойство targets или скрыть предустановки сборки, в которых явно указываются целевые объекты.",
								"items": {
									"type": "string",
									"description": "Необязательная строка. Эквивалентна передаче параметра --target или -t в командной строке. Поставщики могут игнорировать свойство targets или скрыть предустановки сборки, в которых явно указываются целевые объекты."
								}
							}
						]
					},
					"configuration": {
						"type": "string",
						"description": "Необязательная строка. Эквивалентна указанию параметра --config в командной строке."
					},
					"cleanFirst": {
						"type": "boolean",
						"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно указанию параметра --clean-first в командной строке."
					},
					"verbose": {
						"type": "boolean",
						"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --verbose в командной строке."
					},
					"nativeToolOptions": {
						"type": "array",
						"description": "Необязательный массив строк. Эквивалентен передаче параметров после \"--\" в командной строке.",
						"items": {
							"type": "string",
							"description": "Необязательная строка, представляющая параметр, который должен быть передан после \"--\" в командной строке."
						}
					},
					"condition": {
						"$ref": "#/definitions/topCondition"
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"testPresets": {
			"type": "array",
			"description": "Необязательный массив, включающий объекты предустановок тестирования. Используется для указания аргументов ctest. Доступно в версии 2 и более поздних версиях.",
			"items": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"description": "Обязательная строка, представляющая понятное для компьютера имя предустановки. Этот идентификатор используется в аргументе --preset. Не допускается наличие двух предустановок (настройки, сборки или тестирования) в объединении файлов CMakePresets.json и CMakeUserPresets.json с одинаковым именем в одном и том же каталоге.",
						"minLength": 1
					},
					"hidden": {
						"type": "boolean",
						"description": "Необязательное логическое значение, указывающее, следует ли скрыть предустановку. Если предустановка скрыта, она не может использоваться в аргументе --preset, не будет отображаться в интерфейсе CMake и не должна иметь допустимого параметра configurePreset даже в результате наследования. Скрытые предустановки предназначены для использования в качестве основы для других предустановок, наследуемых с помощью поля inherits."
					},
					"inherits": {
						"anyOf": [
							{
								"type": "string",
								"description": "Необязательная строка, представляющая имя предустановки тестирования, от которой осуществляется наследование.",
								"minLength": 1
							},
							{
								"type": "array",
								"description": "Необязательный массив строк, представляющих имена предустановок тестирования, от которых осуществляется наследование. Предустановка будет наследовать все поля в предустановках inherits по умолчанию (за исключением полей name, hidden, inherits, description и displayName), но при необходимости может переопределять их. Если в нескольких предустановках inherits представлены конфликтующие значения для одного и того же поля, будет выбрана более ранняя предустановка в списке inherits. Предустановки в файле CMakePresets.json не могут наследоваться от предустановок в файле CMakeUserPresets.json.",
								"items": {
									"type": "string",
									"description": "Необязательная строка, представляющая имя предустановки, от которой осуществляется наследование.",
									"minLength": 1
								}
							}
						]
					},
					"configurePreset": {
						"type": "string",
						"description": "Необязательная строка, указывающая имя предустановки настройки, которую необходимо связать с этой предустановкой тестирования. Если параметр configurePreset не указан, он должен наследоваться от предустановки inherits (если эта предустановка не скрыта). Каталог дерева сборки выводится из предустановки настройки.",
						"minLength": 1
					},
					"vendor": {
						"type": "object",
						"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако для этого поля должны использоваться те же соглашения, что и для поля поставщика корневого уровня. Если поставщики используют свои собственные поля для каждой предустановки, они должны применять наследование по мере необходимости.",
						"properties": {}
					},
					"displayName": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя именем предустановки."
					},
					"description": {
						"type": "string",
						"description": "Необязательная строка с понятным для пользователя описанием предустановки."
					},
					"inheritConfigureEnvironment": {
						"type": "boolean",
						"description": "Необязательное логическое значение, по умолчанию равное true. Если значение равно true, переменные среды из связанной предустановки настройки наследуются после всех унаследованных сред предустановки тестирования, но перед переменными среды, явно заданными в этой предустановке тестирования."
					},
					"environment": {
						"type": "object",
						"description": "Необязательное сопоставление переменных среды. Ключ используется в качестве имени переменной (и не должен быть пустым). Каждая переменная устанавливается независимо от того, было ли ее значение присвоено средой процесса. Это поле поддерживает раскрытие макросов, и переменные среды в этом сопоставлении могут ссылаться друг на друга и могут указываться в любом порядке, если такие ссылки не приводят к появлению цикла (например, если переменная среды ENV_1 равна $env{ENV_2}, то ENV_2 не может быть равна $env{ENV_1}). Переменные среды наследуются с помощью поля inherits, и среда предустановки будет представлять собой объединение собственной среды и сред всех родительских объектов. Если несколько предустановок в этом объединении определяют одну и ту же переменную, применяются стандартные правила наследования. Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки.",
						"properties": {},
						"additionalProperties": {
							"anyOf": [
								{
									"type": "null",
									"description": "Установка значения NULL для переменной приведет к тому, что переменная не будет задана, даже если значение было унаследовано из другой предустановки."
								},
								{
									"type": "string",
									"description": "Строка, представляющая значение переменной."
								}
							]
						},
						"propertyNames": {
							"pattern": "^.+$"
						}
					},
					"configuration": {
						"type": "string",
						"description": "Необязательная строка. Эквивалентна передаче параметра --build-config в командной строке."
					},
					"overwriteConfigurationFile": {
						"type": "array",
						"description": "Необязательный массив параметров конфигурации для переопределения параметров, указанных в файле конфигурации CTest. Эквивалентно передаче параметра ``--overwrite`` для каждого значения в массиве.",
						"items": {
							"type": "string",
							"description": "Параметр, записанный как пара \"ключ-значение\" в форме \"ключ=значение\"."
						}
					},
					"output": {
						"type": "object",
						"description": "Необязательный объект, указывающий параметры вывода.",
						"properties": {
							"shortProgress": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --progress в командной строке."
							},
							"verbosity": {
								"type": "string",
								"description": "Необязательная строка, определяющая уровень детализации. Допустимые значения: \"default\" (эквивалентно отсутствию флагов детализации в командной строке), \"verbose\" (эквивалентно передаче параметра --verbose в командной строке) и \"extra\" (эквивалентно передаче параметра --extra-verbose в командной строке).",
								"enum": [
									"default",
									"verbose",
									"extra"
								]
							},
							"debug": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --debug в командной строке."
							},
							"outputOnFailure": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --output-on-failure в командной строке."
							},
							"quiet": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --quiet в командной строке."
							},
							"outputLogFile": {
								"type": "string",
								"description": "Необязательная строка, указывающая путь к файлу журнала. Эквивалентна передаче параметра --output-log в командной строке."
							},
							"labelSummary": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение false, то это эквивалентно передаче параметра --no-label-summary в командной строке."
							},
							"subprojectSummary": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение false, то это эквивалентно передаче параметра --no-subproject-summary в командной строке."
							},
							"maxPassedTestOutputSize": {
								"type": "integer",
								"description": "Необязательное целое число, указывающее максимальный объем выходных данных для пройденных тестов в байтах. Эквивалентно передаче параметра --test-output-size-passed в командной строке."
							},
							"maxFailedTestOutputSize": {
								"type": "integer",
								"description": "Необязательное целое число, указывающее максимальный объем выходных данных для неудачных тестов в байтах. Эквивалентно передаче параметра --test-output-size-failed в командной строке."
							},
							"maxTestNameWidth": {
								"type": "integer",
								"description": "Необязательное целое число, указывающее максимальную ширину выводимого имени теста. Эквивалентно передаче параметра --max-width в командной строке."
							}
						},
						"additionalProperties": false
					},
					"filter": {
						"type": "object",
						"description": "Необязательный объект, указывающий, как фильтровать тесты для запуска.",
						"properties": {
							"include": {
								"type": "object",
								"description": "Необязательный объект, указывающий, какие тесты следует включить.",
								"properties": {
									"name": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для имен тестов. Эквивалентна передаче параметра --tests-regex в командной строке."
									},
									"label": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для тестовых меток. Эквивалентна передаче параметра --label-regex в командной строке."
									},
									"index": {
										"anyOf": [
											{
												"type": "object",
												"description": "Необязательный объект, указывающий, какие тесты следует включить, с помощью индекса тестов.",
												"properties": {
													"start": {
														"type": "integer",
														"description": "Необязательное целое число, указывающее индекс теста, с которого нужно начать тестирование."
													},
													"end": {
														"type": "integer",
														"description": "Необязательное целое число, указывающее индекс теста, с которого нужно остановить тестирование."
													},
													"stride": {
														"type": "integer",
														"description": "Необязательное целое число, указывающее приращение."
													},
													"specificTests": {
														"type": "array",
														"description": "Необязательный массив целых чисел, задающий конкретные индексы тестов для запуска.",
														"items": {
															"type": "integer",
															"description": "Целое число, указывающее тест, который необходимо запустить с помощью индекса тестов."
														}
													}
												},
												"additionalProperties": false
											},
											{
												"type": "string",
												"description": "Необязательная строка, указывающая файл с синтаксисом командной строки для --tests-information."
											}
										]
									},
									"useUnion": {
										"type": "boolean",
										"description": "Необязательное логическое значение. Эквивалентно передаче параметра --union в командной строке."
									}
								},
								"additionalProperties": false
							},
							"exclude": {
								"type": "object",
								"description": "Необязательный объект, указывающий, какие тесты следует исключить.",
								"properties": {
									"name": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для имен тестов. Эквивалентна передаче параметра --exclude-regex в командной строке."
									},
									"label": {
										"type": "string",
										"description": "Необязательная строка, указывающая регулярное выражение для тестовых меток. Эквивалентна передаче параметра --label-exclude в командной строке."
									},
									"fixtures": {
										"type": "object",
										"description": "Необязательный объект, указывающий, для каких средств тестирования необходимо исключить добавление тестов.",
										"properties": {
											"any": {
												"type": "string",
												"description": "Необязательная строка, указывающая регулярное выражение для средств тестирования, для которых необходимо исключить добавление любых тестов. Эквивалентна передаче параметра --fixture-exclude-any в командной строке."
											},
											"setup": {
												"type": "string",
												"description": "Необязательная строка, указывающая регулярное выражение для средств тестирования, для которых необходимо исключить добавление тестов настройки. Эквивалентна передаче параметра --fixture-exclude-setup в командной строке."
											},
											"cleanup": {
												"type": "string",
												"description": "Необязательная строка, указывающая регулярное выражение для средств тестирования, для которых необходимо исключить добавление тестов очистки. Эквивалентна передаче параметра --fixture-exclude-cleanup в командной строке."
											}
										},
										"additionalProperties": false
									}
								}
							}
						},
						"additionalProperties": false
					},
					"execution": {
						"type": "object",
						"description": "Необязательный объект, указывающий параметры для выполнения теста.",
						"properties": {
							"stopOnFailure": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --stop-on-failure в командной строке."
							},
							"enableFailover": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра -F в командной строке."
							},
							"jobs": {
								"type": "integer",
								"description": "Необязательное целое число. Эквивалентно передаче параметра --parallel в командной строке."
							},
							"resourceSpecFile": {
								"type": "string",
								"description": "Необязательная строка. Эквивалентна передаче параметра --resource-spec-file в командной строке."
							},
							"testLoad": {
								"type": "integer",
								"description": "Необязательное целое число. Эквивалентно передаче параметра --test-load в командной строке."
							},
							"showOnly": {
								"type": "string",
								"description": "Необязательная строка. Эквивалентна передаче параметра --show-only в командной строке. Допустимые значения: \"human\" и \"json-v1\".",
								"enum": [
									"human",
									"json-v1"
								]
							},
							"repeat": {
								"type": "object",
								"description": "Необязательный объект, указывающий, как повторять тесты. Эквивалентен передаче параметра --repeat в командной строке.",
								"properties": {
									"mode": {
										"type": "string",
										"description": "Обязательная строка. Должна иметь одно из следующих значений: \"until-fail\", \"until-pass\" или \"after-timeout\".",
										"enum": [
											"until-fail",
											"until-pass",
											"after-timeout"
										]
									},
									"count": {
										"type": "integer",
										"description": "Обязательное целое число."
									}
								},
								"required": [
									"mode",
									"count"
								],
								"additionalProperties": false
							},
							"interactiveDebugging": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --interactive-debug-mode 1 в командной строке. Если оно имеет значение false, то это эквивалентно передаче параметра --interactive-debug-mode 0 в командной строке."
							},
							"scheduleRandom": {
								"type": "boolean",
								"description": "Необязательное логическое значение. Если оно имеет значение true, то это эквивалентно передаче параметра --schedule-random в командной строке."
							},
							"timeout": {
								"type": "integer",
								"description": "Необязательное целое число. Эквивалентно передаче параметра --timeout в командной строке."
							},
							"noTestsAction": {
								"type": "string",
								"description": "Необязательная строка, указывающая поведение, если тесты не найдены. Должна иметь одно из следующих значений: \"default\" (эквивалентно передаче любого значения в командной строке), \"error\" (эквивалентно передаче параметра --no-tests=error в командной строке) или \"ignore\" (эквивалентно передаче параметра --no-tests-ignore в командной строке).",
								"enum": [
									"default",
									"error",
									"ignore"
								]
							}
						},
						"additionalProperties": false
					},
					"condition": {
						"$ref": "#/definitions/topCondition"
					}
				},
				"required": [
					"name"
				],
				"additionalProperties": false
			}
		},
		"vendor": {
			"type": "object",
			"description": "Необязательное сопоставление, содержащее сведения, относящиеся к поставщику. CMake не интерпретирует содержимое этого поля, а только проверяет, что оно является сопоставлением, если значение поля указано. Однако ключи должны представлять доменное имя поставщика, за которым должен следовать путь, отделенный символом \"/\". Например, в примере IDE 1.0 можно использовать \"example.com/ExampleIDE/1.0\". Значение каждого поля может быть любым, выбранным поставщиком, хотя как правило используется сопоставление.",
			"properties": {}
		}
	},
	"additionalProperties": false,
	"definitions": {
		"condition": {
			"anyOf": [
				{
					"type": "boolean",
					"description": "Логическое значение, предоставляющее константу для вычисления условия."
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "const"
						},
						"value": {
							"type": "boolean",
							"description": "Обязательное логическое значение, предоставляющее константу для вычисления условия."
						}
					},
					"required": [
						"type",
						"value"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "equals"
						},
						"lhs": {
							"type": "string",
							"description": "Первая строка для сравнения. Это поле поддерживает расширение макросов."
						},
						"rhs": {
							"type": "string",
							"description": "Вторая строка для сравнения. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"lhs",
						"rhs"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "notEquals"
						},
						"lhs": {
							"type": "string",
							"description": "Первая строка для сравнения. Это поле поддерживает расширение макросов."
						},
						"rhs": {
							"type": "string",
							"description": "Вторая строка для сравнения. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"lhs",
						"rhs"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "inList"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка, которую нужно искать. Это поле поддерживает расширение макросов."
						},
						"list": {
							"type": "array",
							"description": "Обязательный список строк для поиска. Это поле поддерживает расширение макросов и использует вычисления по краткой схеме.",
							"items": {
								"type": "string"
							}
						}
					},
					"required": [
						"type",
						"string",
						"list"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "notInList"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка, которую нужно искать. Это поле поддерживает расширение макросов."
						},
						"list": {
							"type": "array",
							"description": "Обязательный список строк для поиска. Это поле поддерживает расширение макросов и использует вычисления по краткой схеме.",
							"items": {
								"type": "string"
							}
						}
					},
					"required": [
						"type",
						"string",
						"list"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "matches"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка для поиска. Это поле поддерживает расширение макросов."
						},
						"regex": {
							"type": "string",
							"description": "Обязательное регулярное выражение, которое нужно искать. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"string",
						"regex"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "notMatches"
						},
						"string": {
							"type": "string",
							"description": "Обязательная строка для поиска. Это поле поддерживает расширение макросов."
						},
						"regex": {
							"type": "string",
							"description": "Обязательное регулярное выражение, которое нужно искать. Это поле поддерживает расширение макросов."
						}
					},
					"required": [
						"type",
						"string",
						"regex"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "anyOf"
						},
						"conditions": {
							"type": "array",
							"description": "Обязательный массив объектов условия. Условие вычисляется по краткой схеме.",
							"items": {
								"$ref": "#/definitions/condition"
							}
						}
					},
					"required": [
						"type",
						"conditions"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "allOf"
						},
						"conditions": {
							"type": "array",
							"description": "Обязательный массив объектов условия. Условие вычисляется по краткой схеме.",
							"items": {
								"$ref": "#/definitions/condition"
							}
						}
					},
					"required": [
						"type",
						"conditions"
					],
					"additionalProperties": false
				},
				{
					"type": "object",
					"properties": {
						"type": {
							"type": "string",
							"description": "Обязательная строка, определяющая тип условия.",
							"const": "not"
						},
						"condition": {
							"$ref": "#/definitions/condition"
						}
					},
					"required": [
						"type",
						"condition"
					],
					"additionalProperties": false
				}
			]
		},
		"topCondition": {
			"description": "Необязательное поле, используемое для определения, включена ли предустановка. Поддерживается в версии 3.",
			"anyOf": [
				{
					"$ref": "#/definitions/condition"
				},
				{
					"type": "null",
					"description": "Значение NULL означает, что условие всегда принимает значение true и не наследуется."
				}
			]
		}
	}
}