{
	"_NOTE" : "THIS FILE IS AUTOGENERATED. ONLY MODIFY THE ORIGINAL FILE IN THE /sharedData/ FOLDER!",
	"valid_identifier_types" : [
		["program", "ProgramModel", "Program"],
		["symbol", "SymbolModel", "Symbol"],
		["rule", "RuleModel", "Rule"],
		["file", "FileObjectModel", "FileObject"],
		["tag", "TagModel", "Tag"],
		["message", "MessageModel", "Message"],
		["event", "EventModel", "Event"],
		["option", "OptionModel", "Option"]
	],
	"valid_event_types" : [
		["default", "StepEventDefault"],
		["execute_rule", "StepEventRule"],
		["execute_option", "StepEventOptionRun"],
		["present_options", "StepEventOptionChoose"],
		["mention_uncertainty", "StepEventUncertainty"],
		["execute_program", "StepEventExecution"],
		["wait_for_signal", "StepEventWait"],
		["user_command", "StepEventUserCommand"]
	],
	"valid_user_command_event_subtypes" : [
		["initialize", "initialize"],
		["submit_data", "submit_data"],
		["change_parameters", "change_parameters"],
		["create_objects", "create_objects"]
	],
	"valid_object_creation_triggers" : [
		"out_of_queued_events",
		"chosen_by_priority",
		"system_generated_tag",
		"user_input",
		"created_by_program",
		"created_by_rule",
		"created_by_option",
		"displaying_list_of_options",
		"mention_uncertainty",
		"error_during_iteration",
		"global_feedback_request"
	],
	"valid_runtime_error_types" : [
		["program_timeout", "the program timed out"],
		["program_interrupted_from_outside", "the program was interrupted from the outside (by the user) before it could finish"],
		["program_docker_execution_failed", "the program encountered an unknown error and did not create an error file in the process"],
		["program_failed_with_error_file", "the program encountered an error and created an error file while doing so"],
		["program_result_parsing_failed", "the output of the program could not be parsed correctly"],
		["program_result_processing_failed", "the result of the program could be parsed locally, but an error occured while processing it on the server"],
		["rule_result_processing_failed", "a Rule attempted to do something illegal on the server."],
		["option_result_processing_failed", "an Option attempted to do something illegal on the server."],
		["user_input_processing_failed", "the User attempted to do something illegal on the server."],
		["file_copying_failed", "a File provided by a user was not copied correctly by a lod-executor."],
		["unexpected_error", "the server encountered an unexpected type of error. This is probably not the fault of the contributors but of the website's designers."]
	],
	"server_ip" : "159.89.10.185",
	"server_url" : "https://legionofdevs.com/",
	"debug_server_url" : "http://localhost:9905/",
	"docker_registry" : "legionofdevs.com:444",
	"default_local_exec_env_host" : "https://localhost",
	"default_local_exec_env_port" : 5555,
	"json_encoding" : "utf-8",
	"server_post_request_timeout" : 10,
	"lod_executor_exec_env_timeout" : 60,
	"new_program_default_max_execution_duration" : 10.0,
	"time_limit_for_exec_env_steps_server_response" : 3.0,
	"predefined_symbols" : [
		{
			"name" : "!set_idle_message",
			"description" : "This tag is used to overwrite the idle message Elody will display if there are no Rules or Options eligible to be used under the current parameter settings.\nTo do so, create a tag with this symbol targeting a hidden Message.\nTarget this tag with a !nullify tag to deactivate it again."
		},
		{
			"name" : "!set_status_message",
			"description" : "This tag is used to overwrite the status message Elody displays.\nTo do so, create a tag with this symbol where the comment is the text you want to display.\nIf the comment is None, a default value is used instead that describes what the lod-executor is currently doing.\nTarget this tag with a !nullify tag to deactivate it again."
		},
		{
			"name" : "!nullify",
			"description" : "This tag is used by several other tags to deactivate those tags when needed.\nIt does not have a meaning on its own, but nullifies/negates/deactivates/ends other tags.\nNote that this behavior is not recursive: You can't !nullify another !nullify tag."
		},
		{
			"name" : "!offer",
			"description" : "This tag is used to mark a 'require_' tag with an offer that may satisfy the requirement.\nThe first argument of an !offer tag should always be the !require tag. The remaining arguments can be whatever is appropriate and should be documented in the description of the require_ symbol.\nThis is similar to [[symbol:!provide]], but where [[symbol:!provide]] means that the requirement has been met, this symbol just means that it might be able to meet it and further investigation is required."
		},
		{
			"name" : "!provide",
			"description" : "This tag is used to mark a 'require_' tag with something that satisfies the requirement.\nThe first argument of an !offer tag should always be the !require tag. The remaining arguments can be whatever is appropriate and should be documented in the description of the require_ symbol.\nSee also: [[symbol:!task]]\nSee also: [[symbol:!offer]]."
		},
		{
			"name" : "!task",
			"description" : "This tag is used to mark the creation of a task.\nThe first argument must always be a tag with a symbol that begins with 'task_'.\nThat tag should be targeted by one or more tags who's symbol begins with 'require_'. These define what is needed to solve the task.\nThe !task tag itself does not currently have a special effect, but it is recommended to create one every time you start a new task and create a corresponding task_ tag, because it helps to inform rules what tasks are currently already active."
		},
		{
			"name" : "?user_input_command_file",
			"description" : "A tag with this symbol targeting a file is created whenever a user enters a text command."
		},
		{
			"name" : "?user_input_uploaded_file",
			"description" : "A tag with this symbol targeting a file is created whenever a user uploads a file."
		},
		{
			"name" : "?user_input_command_keyword",
			"description" : "Tags with this Symbol are created along with ?user_input_command_file.\nThe comment of the Tag is a word that appeared in the entered text."
		},
		{
			"name" : "!set_signal_weight",
			"description" : "This is one of the most important tags:\nIt decides which symbols are considered active for the purpose of activating Rules.\nCreate a tag with this symbol targeting another symbol to create a Signal of that symbol with a given weight, which is used to activate execution rules.\nYou can also target another tag instead of a symbol, in which case the symbol of that tag is used instead.\nNote that the weight specified here is multiplied with the weights of the Rule's Dependencies and that, if the target of this Tag is another Tag, the weight and comment of that Tag is not relevant for this."
		},
		{
			"name" : "!set_option_confidence",
			"description" : "Create a tag with this symbol targeting an Option to set the confidence of that option."
		},
		{
			"name" : "?set_priority_of_asking_for_input",
			"description" : "A tag with this symbol targeting nothing is created to set the priority of waiting for user input in a 'default' event.\nAny Rules with a priority below this are ignored."
		},
		{
			"name" : "?set_priority_of_presenting_options",
			"description" : "A tag with this symbol targeting nothing is created to set the priority of presenting options to the user in a 'default' event."
		},
		{
			"name" : "?set_options_display_threshold",
			"description" : "A tag with this symbol targeting nothing is created to set the confidence an Option needs to reach in order to be presented to the user when Options are supposed to be used."
		},
		{
			"name" : "?set_options_execution_threshold",
			"description" : "A tag with this symbol targeting nothing is created to set the confidence an Option needs to reach in order to be executed."
		},
		{
			"name" : "?set_rule_eligibility_min_ratings_count",
			"description" : "A tag with this symbol with a specific weight targeting nothing is created to specify the minimum number of users that must have rated a Rule for that Rule to be eligible for execution."
		},
		{
			"name" : "?set_rule_eligibility_inherit_rating",
			"description" : "A tag with this symbol targeting nothing, with comment either 'true' or 'false', is created to specify whether or not a Rule that would not have a large enough number of ratings is eligible for execution anyway if an earlier version of the same rule is eligible."
		},
		{
			"name" : "?set_rule_eligibility_requires_moderator_approval",
			"description" : "A tag with this symbol targeting nothing, with comment either 'true' or 'false', is created to specify whether or not a Rule must have moderator approval for that Rule to be eligible for execution."
		},
		{
			"name" : "?set_rule_eligibility_always_allow_own_rules",
			"description" : "A tag with this symbol targeting nothing, with comment either 'true' or 'false', is created to specify whether or not a Rule that was created by the owner of the current Scenario is always eligible for execution, even if it doesn't match some of the requirements."
		},
		{
			"name" : "?elody_decision_process",
			"description" : "A tag with this symbol is generated whenever Elody chooses which Rule or Option to execute next.\nIt targets the Message that is generated to describe the decision process."
		},
		{
			"name" : "?rule_candidate",
			"description" : "When Elody decides what to do next, a tag with this symbol targeting a Rule is created for each Rule who's dependencies are fulfilled and which is a candidate for being executed in this step.\nThe weight of the Tag is the priority of the rule."
		},
		{
			"name" : "?weight_of_options",
			"description" : "A tag with this symbol targeting nothing is created along with the ?rule_candidate Tags.\nThe weight of this Tag is the weight of the Options and can be compared to the weight of the Tags."
		},
		{
			"name" : "?named_argument_list",
			"description" : "A variant of [[symbol:?named_argument]] that is applied to named arguments that can refer to a list of objects instead of a single object. The first argument of this Tag is the item that has a named argument, the remaining arguments of this Tag are the objects used as the argument, and the comment of this Tag is the name of the argument."
		},
		{
			"name" : "?named_argument",
			"description" : "A tag with this symbol targeting two objects and having a comment is created whenever something with named arguments is executed.\nThe first argument of this Tag is the item that has a named argument, the second argument of this Tag is the named argument, and the comment of this Tag is the name of the argument. See also: [[symbol:?named_argument_list]]."
		},
		{
			"name" : "?rule_executed",
			"description" : "A tag with this symbol targeting a Rule and a number of ?named_argument Tags is created whenever a Rule is executed.\nThe other objects are the arguments the rule was run with."
		},
		{
			"name" : "?elody_decision_process_considers_options",
			"description" : "When Elody decides what to do next and starts looking at the Options, a tag with this symbol targeting an Option is created for each Option that is a candidate for being executed in this step if it can find suitable arguments and no other Rule or Option takes priority.\nThe weight of the Tag is the weight of the Option."
		},
		{
			"name" : "?option_candidate",
			"description" : "When Elody decides what to do next and starts looking at the Options, a tag with this symbol targeting an Option is created for each candidate Option.\nThe weight of the Tag is the weight of the Option."
		},
		{
			"name" : "?option_executed",
			"description" : "A tag with this symbol targeting an Option and a number of ?named_argument Tags is created whenever an Option is executed.\nThe other objects are the arguments the Option was run with."
		},
		{
			"name" : "?presented_option",
			"description" : "A tag with this symbol targeting an Option and a number of ?named_argument Tags is automatically created when a group of Options is presented."
		},
		{
			"name" : "?present_options",
			"description" : "A tag with this symbol targeting a number of ?presented_option Tags is automatically created when a group of Options is presented."
		},
		{
			"name" : "?selected_option",
			"description" : "A tag with this symbol targeting an Option and a ?present_options tag group is automatically created when an option is selected from a group of options."
		},
		{
			"name" : "!deactivate_rule_or_option",
			"description" : "A tag with this symbol targeting a Rule or an Option is created by Rules and Options by default, to prevent them from being executed twice.\nThis can be turned off.\nA Rule or Option with this Tag is ignored when the system chooses what to execute next."
		},
		{
			"name" : "?program_executed",
			"description" : "A tag with this symbol targeting a Program and a number of other objects is created whenever a Program is executed.\nThe other objects are the arguments the Program was run with."
		},
		{
			"name" : "?program_execution_results",
			"description" : "A tag with this symbol targeting a ?program_executed Tag and a number of file objects is created whenever a Program is done executing."
		},
		{
			"name" : "?event_failure",
			"description" : "A tag with this symbol is created whenever an event failed to execute correctly."
		}
	]
}
