<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:simpleType name="booleanType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="FALSE"></xsd:enumeration>
			<xsd:enumeration value="TRUE"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="loggingLevelType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="DEBUG"></xsd:enumeration>
			<xsd:enumeration value="INFORMATION"></xsd:enumeration>
			<xsd:enumeration value="WARNING"></xsd:enumeration>
			<xsd:enumeration value="SEVERE"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="loggingDetailType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="LOW"></xsd:enumeration>
			<xsd:enumeration value="HIGH"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="authenticationTypeType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="OS"></xsd:enumeration>
			<xsd:enumeration value="MODULE"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="positionType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="append"></xsd:enumeration>
			<xsd:enumeration value="prepend"></xsd:enumeration>
			<xsd:enumeration value="replace"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="clientType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="DYNAMIC"></xsd:enumeration>
			<xsd:enumeration value="HEADLESS"></xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="SecurityType">
		<xsd:sequence>
			<xsd:element name="UserDefinition" type="UserDefinitionType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
			<xsd:element name="GroupDefinition" type="GroupDefinitionType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="configuration" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="provider" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="keystoreManager" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="cipherSuites" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="protocols" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="clientAuthenticate" default="FALSE" type="booleanType"></xsd:attribute>
		<xsd:attribute name="aclEnabled" type="xsd:string" default="TRUE"></xsd:attribute>
		<xsd:attribute name="keystore" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="keystorePassword" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="serverAlias" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="UserDefinitionType">
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="authenticationType" type="authenticationTypeType" default="OS"></xsd:attribute>
		<xsd:attribute name="authenticationModulePath" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="GroupDefinitionType">
		<xsd:sequence>
			<xsd:element name="Member" type="MemberType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="MemberType">
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="GroupType">
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="AgentControllerEnvironmentType">
		<xsd:sequence>
			<xsd:element name="Variable" type="VariableType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="configuration" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="ApplicationType">
		<xsd:sequence>
			<xsd:element name="Parameter" type="ParameterType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
			<xsd:element name="Variable" type="VariableType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="configuration" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="executable" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="path" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="location" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="extends" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="VariableType">
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="value" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="position" type="positionType" default="append"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="ParameterType">
		<xsd:attribute name="value" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="position" type="positionType" default="append"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="HostsType">
		<xsd:sequence>
			<xsd:element name="Allow" type="AllowType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
			<xsd:element name="Deny" type="DenyType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="configuration" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="AllowType">
		<xsd:attribute name="host" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="net" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="mask" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="DenyType">
		<xsd:attribute name="host" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="net" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="mask" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="ServiceType">
		<xsd:sequence>
			<xsd:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="configuration" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="path" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="AgentType">
		<xsd:sequence>
			<xsd:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
		</xsd:sequence>
		<xsd:attribute name="configuration" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="type" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="dataChannelSize" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="logFile" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="client" type="clientType" default="DYNAMIC"></xsd:attribute>
		<xsd:attribute name="extends" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="OptionType">
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="type" type="xsd:string" use="required"></xsd:attribute>
		<xsd:attribute name="value" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="PluginType">
		<xsd:attribute name="path" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>

</xsd:schema>