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

    <xsd:element name="configuration">
        <xsd:complexType>
            <xsd:all>
                <xsd:element ref="privacy" minOccurs="0"/>
                <xsd:element ref="users" minOccurs="0"/>
                <xsd:element ref="contacts" minOccurs="0"/>
                <xsd:element ref="keys" minOccurs="0"/>
                <xsd:element ref="keyLayer" minOccurs="0"/>
                <xsd:element ref="identities" minOccurs="0"/>
                <xsd:element ref="telephony" minOccurs="0"/>
                <xsd:element ref="aboutPhone" minOccurs="0"/>
                <xsd:element ref="sound" minOccurs="0"/>
                <xsd:element ref="provisioning" minOccurs="0"/>
                <xsd:element ref="update" minOccurs="0"/>
                <xsd:element ref="locales" minOccurs="0"/>
                <xsd:element ref="network" minOccurs="0"/>
                <xsd:element ref="userInterface" minOccurs="0"/>
                <xsd:element ref="templates" minOccurs="0"/>
                <xsd:element ref="remoteAccess" minOccurs="0"/>
                <xsd:element ref="apps" minOccurs="0"/>
                <xsd:element ref="timeAndDate" minOccurs="0"/>
                <xsd:element ref="logging" minOccurs="0"/>
                <xsd:element ref="luaLibraries" minOccurs="0"/>
                <xsd:element ref="luaAutoStarters" minOccurs="0"/>
                <xsd:element ref="luaConfig" minOccurs="0"/>
                <xsd:element ref="contactList" minOccurs="0"/>
                <xsd:element ref="resources" minOccurs="0"/>
                <xsd:element ref="homeScreenDesign" minOccurs="0"/>
                <xsd:element ref="filterSettings" minOccurs="0"/>
		<xsd:element ref="wifi" minOccurs="0"/>
            </xsd:all>
            <!-- version attribute -->
            <xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
            <!-- attribute specifying the default behaviour of the patch mechanism.
             if set to false, subelements without a patch attribute will be set removing previous values.
             if set to true, subelements keep values when no specific patch argument is given.
             
             use case: set to false for strict restores of backup files.
             -->
            <xsd:attribute name="patchDefault" type="xsd:boolean" default="true"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="privacy">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="privacy">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="users">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="users">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="contacts">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="contacts">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="keys">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="keys">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="keyLayer">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="keyLayer">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="identities">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="identities">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="telephony">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="telephony">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="aboutPhone">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="aboutPhone">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="sound">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="sound">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="provisioning">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="provisioning">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="update">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="update">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="locales">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="locales">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="network">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="network">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="userInterface">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="userInterface">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="templates">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="templates">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="remoteAccess">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="remoteAccess">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="apps">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="apps">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="timeAndDate">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="timeAndDate">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="logging">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="logging">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="luaLibraries">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="luaLibraries">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="luaAutoStarters">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="luaAutoStarters">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="luaConfig">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="luaConfig">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="contactList">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="contactList">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="resources">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="resources">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="homeScreenDesign">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="homeScreenDesign">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="filterSettings">
        <xsd:complexType>
            <xsd:complexContent>
                <xsd:extension base="filterSettings">
                    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
                    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
            		<!-- version attribute -->
            		<xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
                </xsd:extension>
            </xsd:complexContent>
        </xsd:complexType>
    </xsd:element>
	<xsd:complexType name="AppError">
		<xsd:all>
			<xsd:element name="code" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="message" type="xsd:string" minOccurs="0"/>
			<xsd:element name="request_id" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- The phones privacy settings -->
	<xsd:complexType name="privacy">
		<xsd:all>
			<xsd:element name="sentry" type="sentry" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Settings for sentry -->
	<xsd:complexType name="sentry">
		<xsd:all>
			<!-- Whether errors in the phone should be reported with sentry
			to the developers.
			This option is subject to data protection laws in the users country.
			Activating this may require you to inform the user about this.
			 -->
			<xsd:element name="sendErrors" type="xsd:boolean" minOccurs="0"/>
			<!-- Whether the admin has already been asked to report errors.
			If true, the administrator shouldn&#x27;t be bothered anymore.
			 -->
			<xsd:element name="permissionAsked" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- A list of all users -->
	<xsd:complexType name="users">
		<xsd:sequence>
			<xsd:element name="user" type="user" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A single user -->
	<xsd:complexType name="user">
		<xsd:all>
			<!-- The name of the user used for display.
			If it is empty, the name will be used.
			 -->
			<xsd:element name="displayName" type="xsd:string" minOccurs="0"/>
			<!-- The password for the user.
			If the password is provisioned, you have to
			supply a hashed password.
			You can create a compatible hash using the
			tool provided in the web interface
			at the following url:
			&#x60;https:
			Over the api, you send the password over HTTPS
			in clear text, where it gets hashed in the
			webserver.
			 -->
			<xsd:element name="password">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:minLength value="8"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="role" type="role" default="user"/>
			<!-- The image for the user, base64 encoded.
			The image should not exceed 300x300px.
			 -->
			<xsd:element name="image" type="xsd:string" minOccurs="0"/>
			<!-- Indicates whether a user has to change his password.
			This flag will only be evaluated by client side logins
			and any tool handling the login should honour it.
			 -->
			<xsd:element name="changePassword" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
		<!-- The name of the user used for login.
		It is at the same time the unique id.
		 -->
		<xsd:attribute name="name" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:pattern value="[^:]*"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>

	<!-- The role for the user.
	an admin is allowed to do everything.
	A user is not allowed to configure anything by default,
	additional rights for the user have to be explicitly granted
	 -->
	<xsd:simpleType name="role">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="user"/>
			<xsd:enumeration value="admin"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A list of xpath values which are supposed to
	serve as either a allow or blocklist.
	 -->
	<xsd:complexType name="rights">
		<xsd:sequence>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Describes a contacts setup -->
	<xsd:complexType name="contacts">
		<xsd:all>
			<xsd:element name="ldap" type="ldap" minOccurs="0"/>
			<xsd:element name="smoothSync" type="smoothSync" minOccurs="0"/>
			<xsd:element name="orderBy" type="orderNameBy" minOccurs="0" default="orderByFirstname"/>
			<xsd:element name="nameFormat" type="nameFormat" minOccurs="0" default="givenNameFirst"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Describes a ldap setup -->
	<xsd:complexType name="ldap">
		<xsd:all>
			<!-- use this service or not -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- ldap server address fqdn or ip address -->
			<xsd:element name="server" type="xsd:string"/>
			<xsd:element name="ldapProtocol" type="ldapProtocol" minOccurs="0" default="ldap"/>
			<!-- ldap server port 389 or 636 (LDAPS) -->
			<xsd:element name="port" minOccurs="0" default="389">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- ldap protocol version 2 or 3 -->
			<xsd:element name="ldapVersion" type="ldapVersion" minOccurs="0" default="three"/>
			<!-- username to login -->
			<xsd:element name="username" type="xsd:string"/>
			<!-- The password to authenticate the for the ldap server -->
			<xsd:element name="password" type="xsd:string"/>
			<!-- name filter according to RFC2254 -->
			<xsd:element name="nameFilter" type="xsd:string" minOccurs="0" default="(|(cn=%*)(cn=* %*)(sn=%*)(sn=* %*)(givenName=%*)(givenName=* %*))"/>
			<!-- number filter according to RFC2254 for reverse number lookup -->
			<xsd:element name="numberFilter" type="xsd:string" minOccurs="0" default="(|(telephoneNumber=*%)(mobile=*%)(homePhone=*%))"/>
			<!-- number filter according to RFC2254 for the number suggestion list in the dialer -->
			<xsd:element name="dialerNumberFilter" type="xsd:string" minOccurs="0" default="(|(telephoneNumber=*%*)(mobile=*%*)(homePhone=*%*))"/>
			<!-- scope that will be searched -->
			<xsd:element name="baseDN" type="xsd:string" minOccurs="0"/>
			<!-- maximum size of a result list for a filtered search -->
			<xsd:element name="maxHits" minOccurs="0" default="20">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="32000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Maximum size of a result list for an unfiltered search when starting the contacts app -->
			<xsd:element name="maxEntriesOnStart" minOccurs="0" default="100">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="32000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- what names are you looking for -->
			<xsd:element name="nameAttributes" type="xsd:string" minOccurs="0" default="cn sn givenName company o"/>
			<!-- what numbers are you looking for -->
			<xsd:element name="numberAttributes" type="xsd:string" minOccurs="0" default="mobile telephoneNumber homePhone"/>
			<!-- find contact by incoming call number -->
			<xsd:element name="reverseNumberLookupIncoming" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- find contact by outgoing call number -->
			<xsd:element name="reverseNumberLookupOutgoing" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<!-- ldap lts modes -->
	<xsd:simpleType name="ldapProtocol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="ldap"/>
			<xsd:enumeration value="ldapStartTls"/>
			<xsd:enumeration value="ldaps"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- LDAP protocol version -->
	<xsd:simpleType name="ldapVersion">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="two"/>
			<xsd:enumeration value="three"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- set of smoothSync configuration parameters -->
	<xsd:complexType name="smoothSync">
		<xsd:sequence>
			<xsd:element name="smoothSyncConfiguration" type="smoothSyncConfiguration" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="smoothSyncConfiguration">
		<xsd:sequence>
			<!-- username to login on the server -->
			<xsd:element name="username" type="xsd:string" minOccurs="0"/>
			<!-- password to login on the server -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- whether the services are read-only or not -->
			<xsd:element name="readonly" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="services" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="smoothSyncService" type="smoothSyncService" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<!-- the name of this smooth Sync config -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="smoothSyncService">
		<xsd:all>
			<xsd:element name="serviceType" type="smoothSyncServiceType" minOccurs="0" default="CardDAV"/>
			<!-- The URL of the service -->
			<xsd:element name="uri" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="smoothSyncServiceType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="CalDAV"/>
			<xsd:enumeration value="CardDAV"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- name sorting order for contact query results -->
	<xsd:simpleType name="orderNameBy">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="orderByFirstname"/>
			<xsd:enumeration value="orderByLastname"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- name format for contact query results -->
	<xsd:simpleType name="nameFormat">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="givenNameFirst"/>
			<xsd:enumeration value="surnameFirst"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- 3 layer of function keys -->
	<xsd:complexType name="keyLayer">
		<xsd:all>
			<xsd:element name="phoneXtensions" type="xtensionKeyLayer" minOccurs="0" default="1"/>
			<xsd:element name="extensionModule1" type="xtensionKeyLayer" minOccurs="0" default="1"/>
			<xsd:element name="extensionModule2" type="xtensionKeyLayer" minOccurs="0" default="1"/>
			<xsd:element name="extensionModule3" type="xtensionKeyLayer" minOccurs="0" default="1"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="xtensionKeyLayer">
		<xsd:restriction base="xsd:integer">
			<xsd:minInclusive value="1"/>
			<xsd:maxInclusive value="3"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- All keys that can be configured -->
	<xsd:complexType name="keys">
		<xsd:all>
			<!-- On D-100/D-200: 18 (3x6) self-labeling Xtension keys in idle-screen. -->
			<xsd:element name="phoneXtensions" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="key" type="key" minOccurs="0" maxOccurs="18"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="extensionModule1" type="xtensionKeys" minOccurs="0"/>
			<xsd:element name="extensionModule2" type="xtensionKeys" minOccurs="0"/>
			<xsd:element name="extensionModule3" type="xtensionKeys" minOccurs="0"/>
			<xsd:element name="homeScreen" type="softKeys" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- 60 Xtension keys on an extension module. -->
	<xsd:complexType name="xtensionKeys">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0" maxOccurs="60"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- 4 keys below the display -->
	<xsd:complexType name="softKeys">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0" maxOccurs="4"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- abstracted version of a collection of keys without any upper bound -->
	<xsd:complexType name="groupedKeys">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- The group a key belongs to -->
	<xsd:simpleType name="keyGroup">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="mainModule"/>
			<xsd:enumeration value="phoneXtensions"/>
			<xsd:enumeration value="extensionModule1"/>
			<xsd:enumeration value="extensionModule2"/>
			<xsd:enumeration value="extensionModule3"/>
			<xsd:enumeration value="homeScreen"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Describes a single functionkey.
	keyNumber: The number of the key. Uniquely identifies a key within a module.
	label: The name of the key. If starting with @string/ an android resource is used..
	info: Detail info of the key mostly displayed on a second line. If starting with @string/ an android resource is used.
	icon: The icon of the key, base64 encoded. The icon is scaled to fit the display container. If starting with @drawable/ an android resource is used.
	 -->
	<xsd:complexType name="key">
		<xsd:all>
			<xsd:element name="keyConfiguration" type="keyConfiguration" minOccurs="0"/>
			<!-- Reference to the text element of the template name.
			 -->
			<xsd:element name="templateName" type="xsd:string" minOccurs="0"/>
		</xsd:all>
		<!-- The number of the key. Uniquely identifies a key within a module. -->
		<xsd:attribute name="keyNumber" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:integer">
					<xsd:minInclusive value="1"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<!-- The name of the key.
		If starting with @string/ an android resource is used.
		 -->
		<xsd:attribute name="label" type="xsd:string"/>
		<!-- Detail info of the key mostly displayed on a second line
		If starting with @string/ an android resource is used.
		 -->
		<xsd:attribute name="info" type="xsd:string"/>
		<!-- The icon of the key, base64 encoded.
		The icon is scaled to fit the display container.
		If starting with @drawable/ an android resource is used.
		 -->
		<xsd:attribute name="icon" type="xsd:string"/>
	</xsd:complexType>

	<!-- Various configuration parameters for a functionkey.
	This can either be:
	- lua code
	- a line
	- a list of functions assigned to the key
	 -->
	<xsd:complexType name="keyConfiguration">
		<xsd:choice>
			<xsd:element name="lua" type="luaContent" minOccurs="0"/>
			<xsd:element name="line" type="line" minOccurs="0"/>
			<xsd:element name="function" type="keyFunction" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>

	<!-- Describes a single function for a functionkey.
	This can any one (or both) of:
	- a reaction to something
	- invoking an action
	 -->
	<xsd:complexType name="keyFunction">
		<xsd:all>
			<xsd:element name="reactions" type="keyReactions" minOccurs="0"/>
			<xsd:element name="invocations" type="keyInvocations" minOccurs="1"/>
		</xsd:all>
	</xsd:complexType>

	<!-- An array of possible reactions for a functionkey -->
	<xsd:complexType name="keyReactions">
		<xsd:sequence>
			<xsd:element name="reaction" type="keyReaction" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A reaction for a functionkey -->
	<xsd:complexType name="keyReaction">
		<xsd:choice>
			<xsd:element name="ledSetting" type="ledSetting" minOccurs="0"/>
			<xsd:element name="presence" type="presence" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="presence">
		<xsd:all>
			<xsd:element name="subscribe" type="subscribe"/>
		</xsd:all>
		<!-- Enable subscription -->
		<xsd:attribute name="enabled" type="xsd:boolean" default="true"/>
		<!-- Signal missed call via green LED -->
		<xsd:attribute name="withCalllog" type="xsd:boolean" default="true"/>
	</xsd:complexType>

	<xsd:complexType name="subscribe">
		<xsd:all>
			<xsd:element name="uri" type="uri"/>
			<!-- If left out, the first available line is used.
			 -->
			<xsd:element name="line" type="line" minOccurs="0"/>
			<!-- If the subscribeType is dialog, you can specify here
			what to listen for. In every other case, this option
			is ignored.
			 -->
			<xsd:element name="listenFor" type="xsd:string" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="type" type="subscribeType" use="required"/>
	</xsd:complexType>

	<!-- The type of the subscription -->
	<xsd:simpleType name="subscribeType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="dialog"/>
			<xsd:enumeration value="message-summary"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- LED reactions for a key -->
	<xsd:complexType name="ledSetting">
		<xsd:all>
		</xsd:all>
		<xsd:attribute name="ledColor" type="ledColor" default="off"/>
		<xsd:attribute name="ledBlinking" type="ledBlinking"/>
	</xsd:complexType>

	<!-- An array of possible actions for a functionkey -->
	<xsd:complexType name="keyInvocations">
		<xsd:sequence>
			<xsd:element name="invocation" type="keyInvocation" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- An action for a functionkey.
	This can either be:
	- A HTTP request
	- A dialogMessage
	 -->
	<xsd:complexType name="keyInvocation">
		<xsd:choice>
			<xsd:element name="http" type="keyHttpRequest" minOccurs="0"/>
			<xsd:element name="setting" type="keySetting" minOccurs="0"/>
			<xsd:element name="dialog" type="dialogMessage" minOccurs="0"/>
			<xsd:element name="invite" type="keyInvite" minOccurs="0"/>
			<xsd:element name="intent" type="keyIntent" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>

	<xsd:complexType name="keyInvite">
		<xsd:all>
			<xsd:element name="uri" type="uri"/>
			<xsd:element name="line" type="line" minOccurs="0"/>
		</xsd:all>
		<!-- do invisible call -->
		<xsd:attribute name="hidden" type="xsd:boolean"/>
		<!-- Try pickup before starting speed dial -->
		<xsd:attribute name="doPickup" type="xsd:boolean" default="true"/>
		<!-- When calling via speed dial -&gt; also add a sip-header that marks the call as auto-answetr so the call connects immediately without ringing first. -->
		<xsd:attribute name="autoAnswer" type="xsd:boolean"/>
	</xsd:complexType>

	<xsd:complexType name="keyIntent">
		<xsd:all>
			<xsd:element name="action" type="xsd:string"/>
			<xsd:element name="data" type="uri" minOccurs="0"/>
			<xsd:element name="component" type="component" minOccurs="0"/>
			<xsd:element name="extras" type="bundle" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="component">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A map of &#x60;&#x27;string&#x27;: bool | int | string&#x60;
	 -->
	<xsd:complexType name="bundle">
		<xsd:sequence>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="booleanExtra">
					<xsd:complexType>
						<xsd:all>
						</xsd:all>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="value" type="xsd:boolean"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="intExtra">
					<xsd:complexType>
						<xsd:all>
						</xsd:all>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="value" type="xsd:long"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="stringExtra">
					<xsd:complexType>
						<xsd:all>
						</xsd:all>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="value" type="xsd:string"/>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

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

	<xsd:complexType name="keySetting">
		<xsd:sequence>
			<xsd:element name="values" minOccurs="1" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:all>
						<xsd:element name="value" type="xsd:string" minOccurs="0"/>
						<xsd:element name="led" type="ledSetting" minOccurs="0"/>
					</xsd:all>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="other" type="ledSetting" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="path" type="uri" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="line">
		<xsd:all>
			<xsd:element name="id" type="xsd:string"/>
			<xsd:element name="component" type="component" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Creates a message dialog on the screen. -->
	<xsd:simpleType name="dialogMessage">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A HTTP request action that can be triggered by pressing a functionkey.
	 -->
	<xsd:complexType name="keyHttpRequest">
		<xsd:all>
			<xsd:element name="request" type="httpRequest" minOccurs="0"/>
			<xsd:element name="httpReactions" type="httpReactions" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="httpReactions">
		<xsd:sequence>
			<xsd:choice minOccurs="1" maxOccurs="unbounded">
				<xsd:element name="responseCode" type="httpReactionResponseCode" minOccurs="0"/>
				<xsd:element name="responseHeader" type="httpReactionResponseHeader" minOccurs="0"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="httpReactionResponseCode">
		<xsd:all>
			<xsd:element name="responseCode" type="xsd:integer" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="dialogMessage" type="dialogMessage"/>
		<xsd:attribute name="ledColor" type="ledColor" default="off"/>
		<xsd:attribute name="ledBlinking" type="ledBlinking"/>
	</xsd:complexType>

	<xsd:complexType name="httpReactionResponseHeader">
		<xsd:all>
		</xsd:all>
		<xsd:attribute name="dialogMessage" type="dialogMessage"/>
		<xsd:attribute name="ledColor" type="ledColor" default="off"/>
		<xsd:attribute name="ledBlinking" type="ledBlinking"/>
		<xsd:attribute name="header" type="xsd:string"/>
		<xsd:attribute name="value" type="xsd:string"/>
	</xsd:complexType>

	<!-- A HTTP Request -->
	<xsd:complexType name="httpRequest">
		<xsd:all>
			<xsd:element name="httpHeader" type="httpHeader" minOccurs="0"/>
			<xsd:element name="uri" type="uri" minOccurs="0"/>
			<xsd:element name="httpContent" type="httpContent" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="httpMethod" type="httpMethod" use="required"/>
	</xsd:complexType>

	<!-- The content of an HTTP request -->
	<xsd:simpleType name="httpContent">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="uri">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Possible HTTP Methods like &#x60;GET&#x60; or &#x60;POST&#x60; -->
	<xsd:simpleType name="httpMethod">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="get"/>
			<xsd:enumeration value="post"/>
			<xsd:enumeration value="delete"/>
			<xsd:enumeration value="put"/>
			<xsd:enumeration value="patch"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Whether the LED should blink or not. -->
	<xsd:simpleType name="ledBlinking">
		<xsd:restriction base="xsd:boolean">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="luaContent">
		<xsd:all>
			<xsd:element name="code" type="luaCode"/>
			<xsd:element name="params" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="param" type="luaParam" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- A parameter for lua scripts to be set by the template. -->
	<xsd:complexType name="luaParam">
		<xsd:all>
			<xsd:element name="value" type="xsd:string" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<!-- a lua-script -->
	<xsd:simpleType name="luaCode">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="callBindings">
		<xsd:sequence>
			<xsd:element name="callBinding" type="callBinding" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Define custom softkeys and/or a camera to be used when in-call with a certain party.
	 -->
	<xsd:complexType name="callBinding">
		<xsd:all>
			<!-- A regular expression that is matched against the sip-uri (username@host) of a remote party -->
			<xsd:element name="remoteParty" type="xsd:string"/>
			<!-- name of one of the cameras to be shown when in-call with the specified remote party -->
			<xsd:element name="camera" type="xsd:string" minOccurs="0"/>
			<!-- define custom softkeys to be displayed - up to two during a certain call-state. -->
			<xsd:element name="softKeys" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="inCallKey" type="inCallKey" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
		<!-- uniquely identifies this callBinding -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<!-- define a custom softkey to be displayed during certain call-states. -->
	<xsd:complexType name="inCallKey">
		<xsd:sequence>
			<xsd:element name="key" type="key" minOccurs="0"/>
			<!-- List of call-states -->
			<xsd:element name="callStates" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="callState" type="callState" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<!-- &quot;State of a call. E.g.: a new outgoing call starts with ringing and when accepted becomes connected.&quot; &quot;Note: When you press hold on your device, the call&#x27;s state will be holding. But when instead the other&quot; &quot;      party holds you, the state will stay connected&quot;
	 -->
	<xsd:simpleType name="callState">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="calling"/>
			<xsd:enumeration value="ringing"/>
			<xsd:enumeration value="holding"/>
			<xsd:enumeration value="connected"/>
			<xsd:enumeration value="disconnected"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- cameras and stuff -->
	<xsd:complexType name="devices">
		<xsd:all>
			<xsd:element name="cameras" type="ipCameras" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="ipCameras">
		<xsd:sequence>
			<xsd:element name="ipCamera" type="ipCamera" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- A camera that can deliver images-files via http-get requests.
	Can be listed in our Camera App. See devices-setting if
	you want to use a Camara in calls.
	 -->
	<xsd:complexType name="ipCamera">
		<xsd:all>
			<!-- the url to use for inquiring images -->
			<xsd:element name="url" type="uri" minOccurs="0"/>
			<!-- how often to update the image. -->
			<xsd:element name="refreshRateInMs" minOccurs="0" default="1000">
				<xsd:simpleType>
					<xsd:restriction base="xsd:long">
						<xsd:minInclusive value="100"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- User in case http-request need authorization. -->
			<xsd:element name="user" type="xsd:string" minOccurs="0"/>
			<!-- Password in case http-request need authorization. -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- Protected cameras can only be watched, when they are attached to an incoming call.
			This is intended for door-intercoms so passers-by don&#x27;t get spyed on.http-request need authorization.
			 -->
			<xsd:element name="privacyProtected" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="panTiltZoom" type="panTiltZoom" minOccurs="0"/>
		</xsd:all>
		<!-- uniquely identifies this camera -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
	</xsd:complexType>

	<!-- Url&#x27;s to control the PTZ-features. When set they change the default-behaviour of certain Keys in a Video-call.
	E.g. volume-control is no longer available in favor for of access to the camera zoom.
	 -->
	<xsd:complexType name="panTiltZoom">
		<xsd:all>
			<!-- Tilt up. Accessed in Call-Screens via up navi-key. -->
			<xsd:element name="up" type="uri" minOccurs="0"/>
			<!-- Tilt down. Accessed in Call-Screens via down navi-key. -->
			<xsd:element name="down" type="uri" minOccurs="0"/>
			<!-- Pan left. Accessed in Call-Screens via left navi-key. -->
			<xsd:element name="left" type="uri" minOccurs="0"/>
			<!-- Pan right. Accessed in Call-Screens via right navi-key. -->
			<xsd:element name="right" type="uri" minOccurs="0"/>
			<!-- Zoom in. Accessed in Call-Screens via Volume-up-key. -->
			<xsd:element name="zoomIn" type="uri" minOccurs="0"/>
			<!-- Zoom out. Accessed in Call-Screens via Volume-down-key. -->
			<xsd:element name="zoomOut" type="uri" minOccurs="0"/>
			<!-- Assume default zoom and/or center. Accessed in Call-Screens via OK-key. -->
			<xsd:element name="reset" type="uri" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- The possible values a LED can have.
	These are probably not supported on all LEDs.
	 -->
	<xsd:simpleType name="ledColor">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="off"/>
			<xsd:enumeration value="red"/>
			<xsd:enumeration value="orange"/>
			<xsd:enumeration value="green"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- A key/value map of a HTTP header
	&#x60;&#x60;&#x60; json
	{
	  &#x27;Accept&#x27;: &#x27;application/json&#x27;
	}
	&#x60;&#x60;&#x60;
	 -->
	<xsd:complexType name="httpHeader">
		<xsd:all>
		</xsd:all>
		<xsd:attribute name="header" type="xsd:string"/>
		<xsd:attribute name="value" type="xsd:string"/>
	</xsd:complexType>

	<!-- Identities -->
	<xsd:complexType name="identities">
		<xsd:sequence>
			<xsd:element name="identity" type="identity" minOccurs="6" maxOccurs="6"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Describes a single identity -->
	<xsd:complexType name="identity">
		<xsd:all>
			<!-- enables the identity for registration -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- The user part of a SIP URI to register the identity -->
			<xsd:element name="username" type="xsd:string" minOccurs="0"/>
			<!-- The password to authenticate the identity register -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- The display name of the identity -->
			<xsd:element name="displayname" type="xsd:string" minOccurs="0"/>
			<!-- The SIP registrar hostname/address -->
			<xsd:element name="registrar" type="xsd:string" minOccurs="0"/>
			<!-- The SIP registrar port -->
			<xsd:element name="registrarPort" minOccurs="0" default="5060">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- The domain of the identity (may differ from registrar).
			There are scenarios, where the registrar is a specific host e.g sip.example.com
			but the sip participants are using a different domain e.g alice@example.org.
			In the above example, the domain would be example.org.
			 -->
			<xsd:element name="domain" type="xsd:string" minOccurs="0"/>
			<!-- If true a SIP REGISTER will be send -->
			<xsd:element name="sendRegister" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- Timeout of registration in minutes -->
			<xsd:element name="registerInterval" minOccurs="0" default="30">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="5"/>
						<xsd:maxInclusive value="60"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Timeout of subscriptions in minutes. Shorter values can produce a significant performance impact. -->
			<xsd:element name="subscriptionInterval" minOccurs="0" default="45">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="120"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="subscriptionFailureHandling" type="subscrFailureHandling" minOccurs="0"/>
			<xsd:element name="registrationFailureHandling" type="regFailureHandling" minOccurs="0"/>
			<xsd:element name="nat" type="nat" minOccurs="0"/>
			<xsd:element name="outboundProxy" type="outboundProxy" minOccurs="0"/>
			<xsd:element name="dialplan" type="dialplan" minOccurs="0"/>
			<!-- Use the dialplan when starting a call from the CallLog.
			 -->
			<xsd:element name="useDialplanInCallLog" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="audiocodecs" type="audiocodeclist" minOccurs="0"/>
			<!-- When a sip-Message (an instant text-message) is received and shown: also sound an alert tone or not.
			 -->
			<xsd:element name="messagesAlertWithSound" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="clir" type="clirType" minOccurs="0" default="displayAnonymous"/>
			<!-- Pbx sometimes uses P-Asserted-Identity headers to signal a transfer. This is usually not the case except
			 for Auerswald PBXes. When set to true: phone re-interprets those headers as transfers if the target number
			 is sufficiently different from the original number.
			 -->
			<xsd:element name="pAssertedMightBeTransfer" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- The sip-username where the phone should subscribe to to get information about voice-messages. It is also used to make the call when trying to access these messages. -->
			<xsd:element name="vmb" type="xsd:string" minOccurs="0"/>
			<!-- plays local music on hold if a call of this identity is set on hold. When enabled, held calls will take away one audio-channel. Since our phones only have 2 channels, this will limit the number of simultaneous calls to two. -->
			<xsd:element name="localmoh" type="xsd:boolean" minOccurs="0"/>
			<!-- Activates sips (SIP over TLS) on connections with this identity. Most likely you have to provide a certificate for the host you provided to be able to connect safely and successfully.
			 -->
			<xsd:element name="secureConnection" type="xsd:boolean" minOccurs="0"/>
			<!-- Use ICE to determine audio-connection. Disable this when ICE is not needed/used, this helps our SipStack to add the correct IP in sdp-offers, especially in VPN-scenarios.
			 -->
			<xsd:element name="useIce" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="srtp" type="srtpMode" minOccurs="0" default="disabled"/>
			<!-- SIPS scheme is used if activated. Means the whole SIP path must be encrypted by TLS
			 -->
			<xsd:element name="Peer2PeerTls" type="xsd:boolean" minOccurs="0"/>
			<!-- Root certificate used as a trust anchor for the host. Text in PEM format.
			 -->
			<xsd:element name="certificate" type="pemCert" minOccurs="0"/>
			<!-- used as pre code for the user part in an invite URI in case of a pickup szenario. e.g. &#x27;##06&#x27; -->
			<xsd:element name="pickupCode" type="xsd:string" minOccurs="0"/>
			<!-- ip version (v4, v6 or automatic) for communication with the host -->
			<xsd:element name="ipVersion" type="ipVersion" minOccurs="0" default="IpAuto"/>
			<!-- optional authentication username used by some of the providers -->
			<xsd:element name="authenticationUsername" type="xsd:string" minOccurs="0"/>
			<xsd:element name="protocolType" type="networkProtocol" minOccurs="0" default="tcp"/>
			<!-- use timeout for SIP sessions -->
			<xsd:element name="sessionTimerActive" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- timeout for SIP sessions in minutes -->
			<xsd:element name="sessionTimerValue" minOccurs="0" default="15">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="2"/>
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- the identity which this one is the fallback for (if the actual one cannot register) 0 :&#x3D; this is not a fallback identity -->
			<xsd:element name="fallbackFor" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="6"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- ringtone assigned to this identity -->
			<xsd:element name="ringtone" type="xsd:string" minOccurs="0" default="SystemDefaultRingtone"/>
			<!-- when a party wants two way early media, this setting sets the mic to muted.
			The mute will be released automatically when the call is connected.
			 -->
			<xsd:element name="startEarlyMediaMuted" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- What to do when a subscription fails. -->
	<xsd:complexType name="subscrFailureHandling">
		<xsd:all>
			<xsd:element name="retryType" type="retryType" minOccurs="0" default="linear"/>
			<!-- Interval in seconds until a subscription is retried after it got terminated by remote. Different subscripton-failures use this setting differently. E.g. a notify with &#x60;Subscription-State: terminated&#x60; follows this setting 1:1 while a subscription-request that gets answered with &#x60;500 Server Internal Error&#x60; multiplies this setting by 10.
			 -->
			<xsd:element name="retryInterval" minOccurs="0" default="180">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- What to do when a registration fails. -->
	<xsd:complexType name="regFailureHandling">
		<xsd:all>
			<xsd:element name="retryType" type="retryType" minOccurs="0" default="linear"/>
			<!-- Interval in seconds until a registration is retried after it failed.
			 -->
			<xsd:element name="retryInterval" minOccurs="0" default="10">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- When to retry: either never, or every xy seconds (linear) or quadratic (i.e. first wait xy seconds, if that retry fails wait 2 times xy seconds, if that fails wait 4 times as long until another attempt).
	 -->
	<xsd:simpleType name="retryType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="never"/>
			<xsd:enumeration value="linear"/>
			<xsd:enumeration value="quadratic"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="networkInterface">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="network"/>
			<xsd:enumeration value="vpn"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- protocol used for network traffic -->
	<xsd:simpleType name="networkProtocol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="udp"/>
			<xsd:enumeration value="tcp"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="srtpMode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="mandatory"/>
			<xsd:enumeration value="optional"/>
			<xsd:enumeration value="disabled"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipVersion">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="IpV4"/>
			<xsd:enumeration value="IpV6"/>
			<xsd:enumeration value="IpAuto"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Settings that are needed for networks where a network address translation is active -->
	<xsd:complexType name="nat">
		<xsd:all>
			<xsd:element name="useStunSip" type="useStun" minOccurs="0" default="inactive"/>
			<xsd:element name="useStunRtp" type="useStun" minOccurs="0" default="inactive"/>
			<!-- interval in which keepalive packets are send. Value in seconds. Used to ensure that every network component in use is reminded, that our connection is still active. -->
			<xsd:element name="keepaliveInterval" minOccurs="0" default="45">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="15"/>
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="useStun">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="inactive"/>
			<xsd:enumeration value="active"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="outboundProxy">
		<xsd:all>
			<xsd:element name="mode" type="outboundProxyMode" minOccurs="0" default="inactive"/>
			<xsd:element name="url" type="xsd:string" minOccurs="0"/>
			<xsd:element name="port" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="url2" type="xsd:string" minOccurs="0"/>
			<xsd:element name="port2" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="outboundProxyMode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="inactive"/>
			<xsd:enumeration value="automatic"/>
			<xsd:enumeration value="manual"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- a set of rules, that are applied on outgoing calls and can modify the number, so that this number can be routed on the outside network. The order of the rules is important. The first matching rule is used. -->
	<xsd:complexType name="dialplan">
		<xsd:sequence>
			<xsd:element name="rule" type="rule" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- if the pattern matches, the replace string is used. (...) defines blocks, that can be reused with $NUMBER. If three blocks are used in the pattern, we can use $1 $2 and $3 in the replace. -->
	<xsd:complexType name="rule">
		<xsd:all>
			<!-- a regular expression -->
			<xsd:element name="pattern" type="xsd:string"/>
			<xsd:element name="replace" type="xsd:string"/>
		</xsd:all>
	</xsd:complexType>

	<!-- List of supported audio codecs. The order of the list is important. When creating a connection, the server and the client use the first codec, that is supported by both parties. -->
	<xsd:complexType name="audiocodeclist">
		<xsd:sequence>
			<xsd:element name="audiocodec" type="audiocodec" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="audiocodec">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="G.711"/>
			<xsd:enumeration value="G.722"/>
			<xsd:enumeration value="G.726"/>
			<xsd:enumeration value="G.729"/>
			<xsd:enumeration value="iLBC"/>
			<xsd:enumeration value="speex"/>
			<xsd:enumeration value="opus"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- &quot;When clir is enabled we set the X-Privacy-Header in outgoing calls. We also change the From-Header to either:&quot; &quot;- say the display-name is &#x27;anonymous&#x27;&quot; &quot;- have the username set to anonymous, i.e. anonymous@registrar&quot;
	 -->
	<xsd:simpleType name="clirType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="displayAnonymous"/>
			<xsd:enumeration value="userAnonymous"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="audioDevice">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="speaker"/>
			<xsd:enumeration value="headset"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="sound">
		<xsd:all>
			<!-- which ringtone shall be used by default -->
			<xsd:element name="defaultRingtone" type="xsd:string" minOccurs="0" default="Office2"/>
			<!-- which notification shall be used by default -->
			<xsd:element name="defaultNotification" type="xsd:string" minOccurs="0" default="Aldebaran"/>
			<!-- which alarm shall be used by default -->
			<xsd:element name="defaultAlarm" type="xsd:string" minOccurs="0" default="Alarm_Beep_01"/>
			<xsd:element name="volumes" type="volumes" minOccurs="0"/>
			<!-- should bluetooth connections use wideband audio -->
			<xsd:element name="useBluetoothWideband" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- List of patterns and associated ringtones that can be used to decide which ringtone is used for which alert info. -->
			<xsd:element name="alertInfoRingtones" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="alertInfoRingtone" type="alertInfoRingtone" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- Stop the signalling (ringing or call waiting) by moving in front of the proximity sensor. (D-600 only) -->
			<xsd:element name="stopSignallingByProximity" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="alertInfoRingtone">
		<xsd:all>
			<!-- The pattern used to search for a match in the alert info. -->
			<xsd:element name="pattern" type="xsd:string" minOccurs="0"/>
			<!-- The ringtone to be used when this pattern is matched with the alert info -->
			<xsd:element name="ringtone" type="xsd:string" minOccurs="0" default="SystemDefaultRingtone"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="volumes">
		<xsd:all>
			<!-- volume to use when phone is ringing -->
			<xsd:element name="ringing" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume to use when a notification becomes active -->
			<xsd:element name="notifying" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume to use when an alarm becomes active -->
			<xsd:element name="alarming" minOccurs="0" default="7">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume-level used to play audio via headset -->
			<xsd:element name="headset" minOccurs="0" default="9">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume-level used to play audio via speaker -->
			<xsd:element name="speaker" minOccurs="0" default="9">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- volume-level used to play audio via handset -->
			<xsd:element name="handset" minOccurs="0" default="9">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="ringtone">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="80s"/>
			<xsd:enumeration value="American_Phone"/>
			<xsd:enumeration value="Big_A"/>
			<xsd:enumeration value="Champagne_Edition"/>
			<xsd:enumeration value="Classic1"/>
			<xsd:enumeration value="Classic2"/>
			<xsd:enumeration value="Classic3"/>
			<xsd:enumeration value="CrazyDream"/>
			<xsd:enumeration value="Door"/>
			<xsd:enumeration value="DreamTheme"/>
			<xsd:enumeration value="Groovy1"/>
			<xsd:enumeration value="Groovy2"/>
			<xsd:enumeration value="Groovy3"/>
			<xsd:enumeration value="Jazz1"/>
			<xsd:enumeration value="Jazz2"/>
			<xsd:enumeration value="Leo"/>
			<xsd:enumeration value="Office1"/>
			<xsd:enumeration value="Office2"/>
			<xsd:enumeration value="Office3"/>
			<xsd:enumeration value="Office4"/>
			<xsd:enumeration value="Old_Phone"/>
			<xsd:enumeration value="Road_Trip"/>
			<xsd:enumeration value="Special"/>
			<xsd:enumeration value="Aldebaran"/>
			<xsd:enumeration value="Talitha"/>
			<xsd:enumeration value="Selenium"/>
			<xsd:enumeration value="Alarm_Beep_01"/>
			<xsd:enumeration value="Alarm_Beep_02"/>
			<xsd:enumeration value="Scandium"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ringtonesWithSystemRingtone">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="SystemDefaultRingtone"/>
			<xsd:enumeration value="80s"/>
			<xsd:enumeration value="American_Phone"/>
			<xsd:enumeration value="Big_A"/>
			<xsd:enumeration value="Champagne_Edition"/>
			<xsd:enumeration value="Classic1"/>
			<xsd:enumeration value="Classic2"/>
			<xsd:enumeration value="Classic3"/>
			<xsd:enumeration value="CrazyDream"/>
			<xsd:enumeration value="Door"/>
			<xsd:enumeration value="DreamTheme"/>
			<xsd:enumeration value="Groovy1"/>
			<xsd:enumeration value="Groovy2"/>
			<xsd:enumeration value="Groovy3"/>
			<xsd:enumeration value="Jazz1"/>
			<xsd:enumeration value="Jazz2"/>
			<xsd:enumeration value="Leo"/>
			<xsd:enumeration value="Office1"/>
			<xsd:enumeration value="Office2"/>
			<xsd:enumeration value="Office3"/>
			<xsd:enumeration value="Office4"/>
			<xsd:enumeration value="Old_Phone"/>
			<xsd:enumeration value="Road_Trip"/>
			<xsd:enumeration value="Special"/>
			<xsd:enumeration value="Aldebaran"/>
			<xsd:enumeration value="Talitha"/>
			<xsd:enumeration value="Selenium"/>
			<xsd:enumeration value="Alarm_Beep_01"/>
			<xsd:enumeration value="Alarm_Beep_02"/>
			<xsd:enumeration value="Scandium"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- settings for local telephony features. -->
	<xsd:complexType name="telephony">
		<xsd:all>
			<!-- if and how a waiting call has to be signalised -->
			<xsd:element name="callWaiting" type="callWaiting" minOccurs="0"/>
			<!-- if an incoming call shall be rejected -->
			<xsd:element name="doNotDisturb" type="doNotDisturb" minOccurs="0"/>
			<xsd:element name="callForwarding" type="callForwarding" minOccurs="0"/>
			<!-- Tells the PBX to hide the callers identity in outgoing calls. -->
			<xsd:element name="clir" type="clir" minOccurs="0"/>
			<!-- When enabled looks for name of call-partner in adressbooks (local, ldap, ..). -->
			<xsd:element name="reverseNumberLookup" type="reverseNumberLookup" minOccurs="0"/>
			<!-- default audio device in idle like headset or speaker -->
			<xsd:element name="defaultAudioDevice" type="audioDevice" minOccurs="0" default="speaker"/>
			<!-- line to use for unspecified outgoing calls. Uses the first defined line if not defined
			 -->
			<xsd:element name="activeLine" type="line" minOccurs="0"/>
			<!-- Time delay to start the call when there is no activity. Measured in milliseconds. -1 &#x3D; never
			 -->
			<xsd:element name="callStartTimeout" type="xsd:integer" minOccurs="0" default="-1"/>
			<!-- connect incoming call automatically without user-interaction -->
			<xsd:element name="autoAccept" type="autoAccept" minOccurs="0"/>
			<!-- when an outgoing call fails (busy &#x27;CCBS&#x27;, not responding &#x27;CCNR&#x27;) -&gt; monitor the remote via subscription and inform the user when party becomes available -->
			<xsd:element name="callCompletion" type="callCompletion" minOccurs="0"/>
			<xsd:element name="callBindings" type="callBindings" minOccurs="0"/>
			<!-- decide whether the reached target or the initially called target should be used in the calllog.
			the default will show the called target.
			Set to true, the config will lead to the reached target stated in the calllog, while the initially called number can be found in the via section of the calllog details.
			 -->
			<xsd:element name="callLogWithReachedTarget" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="autoAccept">
		<xsd:all>
			<!-- allow calls to automatically connect when they want to (in SIP-invite -&gt; Alert-Info-header with info&#x3D;alert-autoanswer) -->
			<xsd:element name="immediatelyWhenRequested" type="xsd:boolean" minOccurs="0"/>
			<!-- Time delay to accept an incoming call automatically. Measured in milliseconds. -1 &#x3D; never
			 -->
			<xsd:element name="afterTimeout" minOccurs="0" default="-1">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="-1"/>
						<xsd:maxInclusive value="60000"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- sound a short signal when a call gets auto-connected -->
			<xsd:element name="withAlarmBeep" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- place ongoing calls on hold in order to connect auto-answer-call. With false just lets them knock. -->
			<xsd:element name="interruptWhenBusy" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callCompletion">
		<xsd:all>
			<!-- enables the function callCompletion -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- time to wait for &#x27;not responding&#x27; in seconds -->
			<xsd:element name="timeout" minOccurs="0" default="-1">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="-1"/>
						<xsd:maxInclusive value="60"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callWaiting">
		<xsd:all>
			<!-- enables the function callWaiting -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- enables the signalisation of a waiting call -->
			<xsd:element name="tone" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="doNotDisturb">
		<xsd:all>
			<!-- enables the function doNotDisturb -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callForwarding">
		<xsd:all>
			<xsd:element name="unconditional" type="callForwardingMethod" minOccurs="0"/>
			<xsd:element name="busy" type="callForwardingMethod" minOccurs="0"/>
			<xsd:element name="noResponse" type="callForwardingMethod" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="callForwardingMethod">
		<xsd:all>
			<!-- enables call forwarding -->
			<xsd:element name="active" type="xsd:boolean"/>
			<!-- the target to forward calls to -->
			<xsd:element name="target" type="uri"/>
			<!-- the time [s] after which the call must be forwarded -->
			<xsd:element name="timeout" type="xsd:integer" minOccurs="0" default="20"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="clir">
		<xsd:all>
			<!-- Tells the PBX to hide the callers identity in outgoing calls. -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="reverseNumberLookup">
		<xsd:all>
			<!-- When enabled looks for name of call-partner in adressbooks (local, ldap, ..). -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="provisioning">
		<xsd:all>
			<!-- enables the provisioning -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- checks the dhcp fields 66 and 67 for an provisioning url -->
			<xsd:element name="dhcp" type="xsd:boolean" minOccurs="0"/>
			<!-- checks for a provisioning redirection on connect.redirect.auerswald.de -->
			<xsd:element name="redirect" type="xsd:boolean" minOccurs="0"/>
			<!-- checks via properitary sip-multicast extension for an provisioning url -->
			<xsd:element name="pbx" type="xsd:boolean" minOccurs="0"/>
			<!-- the url to use when nothing else is available -->
			<xsd:element name="url" type="uri" minOccurs="0"/>
			<!-- configuration via the established sip connection -->
			<xsd:element name="sip" type="sipProvisioning" minOccurs="0"/>
			<xsd:element name="execution" type="executionTime" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="sipProvisioning">
		<xsd:all>
			<!-- allows provisioning via sip -->
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<!-- list of valid sender hosts -->
			<xsd:element name="allowlist" type="allowlist" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="allowlist">
		<xsd:sequence>
			<xsd:element name="allowlistEntry" type="allowlistEntry" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="allowlistEntry">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- defines when to execute a given task. -->
	<xsd:complexType name="executionTime">
		<xsd:all>
			<xsd:element name="mondays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="tuesdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="wednesdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="thursdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="fridays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="saturdays" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="sundays" type="xsd:boolean" minOccurs="0"/>
			<!-- a time in HH:MM format -->
			<xsd:element name="time" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:pattern value="(2[0-3]|[0-1]?[0-9]):[0-5][0-9]"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="update">
		<xsd:all>
			<!-- check for updates -->
			<xsd:element name="check" type="xsd:boolean" minOccurs="0"/>
			<!-- automatically install updates if available -->
			<xsd:element name="autoInstall" type="xsd:boolean" minOccurs="0"/>
			<!-- url for update server -->
			<xsd:element name="url" type="uri" minOccurs="0"/>
			<xsd:element name="execution" type="executionTime" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- settings specific to the phone -->
	<xsd:complexType name="aboutPhone">
		<xsd:all>
			<!-- the name to display for this device when no primary user is present or appropiate. -->
			<xsd:element name="deviceName" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="network">
		<xsd:all>
			<xsd:element name="ethernet" type="ethernet" minOccurs="0"/>
			<xsd:element name="vpn" type="vpn" minOccurs="0"/>
			<xsd:element name="topology" type="topology" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="vpn">
		<xsd:all>
			<xsd:element name="active" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="vpnType" type="vpnType" minOccurs="0" default="IpsecXauthPSK"/>
			<!-- unique identifier of the Profile -->
			<xsd:element name="name" type="xsd:string"/>
			<!-- server address or resolvable name -->
			<xsd:element name="server" type="xsd:string" minOccurs="0"/>
			<!-- username, used for xauth -->
			<xsd:element name="username" type="xsd:string" minOccurs="0"/>
			<!-- pasword, used for xauth -->
			<xsd:element name="password" type="xsd:string" minOccurs="0"/>
			<!-- multiple entries are seperated by space -->
			<xsd:element name="dnsServers" type="xsd:string" minOccurs="0"/>
			<!-- multiple entries are seperated by space -->
			<xsd:element name="searchDomains" type="xsd:string" minOccurs="0"/>
			<!-- multiple entries are seperated by space, format 10.1.0.0/16 -->
			<xsd:element name="routes" type="xsd:string" minOccurs="0"/>
			<xsd:element name="ipsecIdentifier" type="xsd:string" minOccurs="0"/>
			<!-- preshared key, used in XauthPSK -->
			<xsd:element name="ipsecSecret" type="xsd:string" minOccurs="0"/>
			<xsd:element name="ipsecUserCert" type="pemCert" minOccurs="0"/>
			<xsd:element name="ipsecUserPrivateKey" type="pemRsaKey" minOccurs="0"/>
			<xsd:element name="ipsecCaCert" type="pemCert" minOccurs="0"/>
			<xsd:element name="ipsecServerCert" type="pemCert" minOccurs="0"/>
			<!-- ensures, that traffic designated for the vpn is never routed except through the ipsec tunnel. Requires a ipv4 server and dns entry to work. -->
			<xsd:element name="ipsecLockdown" type="xsd:boolean" minOccurs="0"/>
			<!-- file content of an openvpn config file -->
			<xsd:element name="openvpnConfig" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="vpnType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="IpsecXauthPSK"/>
			<xsd:enumeration value="IpsecXauthRSA"/>
			<xsd:enumeration value="IpsecHybridRSA"/>
			<xsd:enumeration value="L2TPIpsecPSK"/>
			<xsd:enumeration value="L2TPIpsecRSA"/>
			<xsd:enumeration value="OpenVPN"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- X509 certificate in PEM format -->
	<xsd:simpleType name="pemCert">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<!-- RSA key in PEM format -->
	<xsd:simpleType name="pemRsaKey">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="ethernet">
		<xsd:all>
			<xsd:element name="ipv4" type="ipv4" minOccurs="0"/>
			<xsd:element name="ipv6" type="ipv6" minOccurs="0"/>
			<xsd:element name="vlan" type="vlan" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="vlan">
		<xsd:all>
			<xsd:element name="phoneActive" type="vlanActive" minOccurs="0"/>
			<xsd:element name="phoneId" type="vlanId" minOccurs="0"/>
			<xsd:element name="phonePriority" type="vlanPriority" minOccurs="0"/>
			<xsd:element name="workstationActive" type="vlanActive" minOccurs="0"/>
			<xsd:element name="workstationId" type="vlanId" minOccurs="0"/>
			<xsd:element name="workstationPriority" type="vlanPriority" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="vlanActive">
		<xsd:restriction base="xsd:boolean">
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="vlanId">
		<xsd:restriction base="xsd:integer">
			<xsd:maxInclusive value="4095"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="vlanPriority">
		<xsd:restriction base="xsd:integer">
			<xsd:maxInclusive value="7"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv4mode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="dhcp"/>
			<xsd:enumeration value="static"/>
			<xsd:enumeration value="disable"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="ipv4">
		<xsd:all>
			<xsd:element name="mode" type="ipv4mode" default="dhcp"/>
			<xsd:element name="address" type="ipv4address" minOccurs="0"/>
			<xsd:element name="netmask" type="ipv4netmask" minOccurs="0"/>
			<xsd:element name="gateway" type="ipv4address" minOccurs="0"/>
			<xsd:element name="dns1" type="ipv4dns" minOccurs="0"/>
			<xsd:element name="dns2" type="ipv4dns" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="ipv6mode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="dhcp"/>
			<xsd:enumeration value="disable"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="ipv6">
		<xsd:all>
			<xsd:element name="mode" type="ipv6mode" default="disable"/>
			<xsd:element name="privacyExtensions" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="dns1" type="ipv6address" minOccurs="0"/>
			<xsd:element name="dns2" type="ipv6address" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="ipv4address">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv4dns">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="(([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])|(\s*))"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv4netmask">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="(([012]?\d|3[012])|(((0|128|192|24[08]|25[24])\.0\.0\.0)|(255\.(0|128|192|24[08]|25[24])\.0\.0)|(255\.255\.(0|128|192|24[08]|25[24])\.0)|(255\.255\.255\.(0|128|192|24[08]|25[245]))))"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ipv6address">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="(((([0-9a-fA-F]{1,4}:){7,7}([0-9a-fA-F]{1,4}))|(([0-9a-fA-F]{1,4}:){1,7})|(([0-9a-fA-F]{1,4}:){1,6}(:[0-9a-fA-F]{1,4}))|(([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2})|(([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3})|(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4})|(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5})|(([0-9a-fA-F]{1,4}:){1,1}(:[0-9a-fA-F]{1,4}){1,6})|(:((:[0-9a-fA-F]{1,4}){1,7})|:)){0,1})"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="topology">
		<xsd:all>
			<!-- rtp frame size in milliseconds (typically 10, 20 or 30 ms)
			values lower than 10 will be handled as 0, which enables codec specific behaviour (the default)
			 -->
			<xsd:element name="frameSize" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="30"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="jitterBuffer" type="jitterBuffer" minOccurs="0"/>
			<xsd:element name="stunServers" type="stunServers" minOccurs="0"/>
			<!-- outgoing port of SIP messages. 0 will be used for generating a random one. -->
			<xsd:element name="localSipPort" minOccurs="0" default="5060">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1024"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Validate the hostname against the CN of the provided Certificate on sip tls connections.
			 -->
			<xsd:element name="checkHostname" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- send rtp data only if a voice is active. This setting takes effect on the next start of a stream.
			 -->
			<xsd:element name="voiceActivityDetection" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="jitterBuffer">
		<xsd:all>
			<!-- Initial prefetch delay in milliseconds.
			The value must be between minimumPrefetch and maximumPrefetch.
			If the value is 0 prefetch will be disabled.
			 -->
			<xsd:element name="init" type="xsd:integer" minOccurs="0"/>
			<!-- Minimum prefetch delay in milliseconds.
			 -->
			<xsd:element name="minimumPrefetch" type="xsd:integer" minOccurs="0" default="60"/>
			<!-- Maximum prefetch delay in milliseconds.
			 -->
			<xsd:element name="maximumPrefetch" type="xsd:integer" minOccurs="0" default="240"/>
			<!-- delay that can be accommodated by the jitter buffer in milliseconds.
			 -->
			<xsd:element name="max" type="xsd:integer" minOccurs="0" default="360"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="stunServers">
		<xsd:sequence>
			<xsd:element name="stunServer" type="stunServer" minOccurs="0" maxOccurs="8"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="stunServer">
		<xsd:all>
			<!-- Hostname/ip of the stun server -->
			<xsd:element name="stunUrl" type="xsd:string" minOccurs="0"/>
			<!-- port of the stun server -->
			<xsd:element name="stunPort" minOccurs="0" default="3478">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="65535"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- interval in which stun requests are issued. Value in minutes. -->
			<xsd:element name="stunRequestInterval" minOccurs="0" default="5">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="60"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="templates">
		<xsd:sequence>
			<xsd:element name="template" type="template" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="template">
		<xsd:all>
			<xsd:element name="keyConfiguration" type="keyConfiguration"/>
			<xsd:element name="parameters" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="parameter" type="parameter" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
		<!-- Text identifying the Template. Has to be unique. Will be referenced in key structure to store which template was used. Free usable text or android resource tag
		 -->
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<!-- sort with prio
		 -->
		<xsd:attribute name="prio" type="xsd:integer"/>
		<xsd:attribute name="description" type="xsd:string"/>
		<!-- The icon of the key, base64 encoded.
		The icon is scaled to fit the display container.
		If starting with @drawable/ a android resource is used
		 -->
		<xsd:attribute name="icon" type="xsd:string"/>
	</xsd:complexType>

	<xsd:complexType name="parameter">
		<xsd:sequence>
			<!-- List of XPath elements within the key structure.
			 -->
			<xsd:element name="path" type="xsd:string" maxOccurs="unbounded"/>
			<!-- List of allowed values. If empty, all values are allowed.
			 -->
			<xsd:element name="choices" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="choice" type="paramChoice" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
		<!-- Type for this field. Defaults to &quot;text&quot; if unspecified.
		If set to &quot;identity&quot;, must be a valid identity index, and will
		show an identity chooser in configuration UI.
		 -->
		<xsd:attribute name="type" type="paramTypeEnum" default="text"/>
		<!-- Minimum value (for type number) or length (for type text)
		 -->
		<xsd:attribute name="min" type="xsd:integer"/>
		<!-- Maximum value (for type number) or length (for type text)
		 -->
		<xsd:attribute name="max" type="xsd:integer"/>
		<xsd:attribute name="name" type="xsd:string"/>
		<xsd:attribute name="description" type="xsd:string"/>
		<!-- Optional parameters may be left empty, the save-button in PUI will work without them.
		 -->
		<xsd:attribute name="optional" type="xsd:boolean"/>
	</xsd:complexType>

	<xsd:complexType name="paramChoice">
		<xsd:all>
			<xsd:element name="value" type="xsd:string"/>
			<xsd:element name="description" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="paramTypeEnum">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="text"/>
			<xsd:enumeration value="boolean"/>
			<xsd:enumeration value="identity"/>
			<xsd:enumeration value="number"/>
			<xsd:enumeration value="phone"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="display">
		<xsd:all>
			<!-- Time till lockscreen appears on no activity. Measured in milliseconds. -1 &#x3D; never
			 -->
			<xsd:element name="timeout" type="xsd:integer" minOccurs="0" default="-1"/>
			<xsd:element name="contrast" minOccurs="0" default="4">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1"/>
						<xsd:maxInclusive value="7"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="brightness" minOccurs="0" default="160">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="57"/>
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="backlightMode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="manual"/>
			<xsd:enumeration value="ambientlight"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- All these keypad-settings only work on our D600 model. -->
	<xsd:complexType name="keypad">
		<xsd:all>
			<!-- Mode of operation for keypad-backlight. -->
			<xsd:element name="backlightMode" type="backlightMode" minOccurs="0" default="ambientlight"/>
			<!-- Brightness to set keypad&#x27;s backlight to. Works as maximum in &#x27;ambient light&#x27; mode. -->
			<xsd:element name="brightness" minOccurs="0" default="255">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="255"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- The distance (in cm) on which the proximity sensor reacts to. -->
			<xsd:element name="proximitySensorDistance" minOccurs="0" default="15">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:maxInclusive value="25"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<!-- Allow screen to wake up just by waving your hand (or other body-parts) in front of the keypad. -->
			<xsd:element name="wakeByProximity" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="userInterface">
		<xsd:all>
			<xsd:element name="display" type="display" minOccurs="0"/>
			<xsd:element name="messages" type="messages" minOccurs="0"/>
			<xsd:element name="leds" type="leds" minOccurs="0"/>
			<xsd:element name="keypad" type="keypad" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="messages">
		<xsd:all>
			<!-- title: Calls
			message: You have &lt;X&gt; missed call(s).
			 -->
			<xsd:element name="newMissedCalls" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- Message appears when the missed call log has entries, none of which are new to the user.
			title: Calls
			message: You have missed calls.
			 -->
			<xsd:element name="signalSeenMissedCalls" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- title: Voicemail
			message: &lt;varies&gt;
			 -->
			<xsd:element name="newVoiceMails" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- Message appears when the mailbox has entries, none of which are new to the user.
			title: Voicemail
			message: &lt;varies&gt;
			 -->
			<xsd:element name="signalOldMailboxMessages" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- title: Webserver insecure
			message: Admin user must change password.
			 -->
			<xsd:element name="insecureWui" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: Provisioning error.
			message: &lt;none&gt;
			 -->
			<xsd:element name="provisioningError" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Failed to download
			message: &lt;varies&gt;
			 -->
			<xsd:element name="provisioningDownloadFailed" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Failed to install
			message: &lt;varies&gt;
			 -->
			<xsd:element name="provisioningInstallFailed" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Failed to parse the XML file
			message: &lt;varies&gt;
			 -->
			<xsd:element name="provisioningXmlParseError" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: one of [Update completed - No new firmware available. - New firmware available. - Update failed - Check for firmware failed. - Downloading firmware failed. - Invalid firmware-image.]
			message: &lt;varies&gt;
			 -->
			<xsd:element name="updateNote" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: one of [Download of file &lt;X&gt; failed. - Download of file &lt;X&gt; was successful.]-image.]
			message: &lt;none&gt; or Press to install, dismiss to delete
			 -->
			<xsd:element name="downloadManager" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: &lt;name of identity&gt;
			message: Identity registration failed. Error: ..
			 -->
			<xsd:element name="sipRegistrationFailed" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: &lt;name of identity&gt;
			message: Fallback identity active
			 -->
			<xsd:element name="fallbackIdentityActive" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: &lt;name of identity&gt;
			message: one of [This fallback identity has an invalid destination identity. - Multiple fallback identities to one main identity are not allowed. - A fallback identity may only refer to a non fallback identity.]
			 -->
			<xsd:element name="fallbackIdentityError" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: one of [Telephony impaired. - Telephony disabled.]
			message: &lt;varies&gt;
			 -->
			<xsd:element name="noRegistrationNoCalls" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: Call completion from &lt;X&gt; pending.
			message: Delete or click to stop waiting.
			 -->
			<xsd:element name="automaticCallbackEnabled" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- title: Call completion is now possible.
			message: Participant &lt;X&gt; is now available, do you want to call back?
			 -->
			<xsd:element name="automaticCallbackAlerting" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: Back to ongoing call
			message: &lt;name &amp; nr of call partner&gt;
			 -->
			<xsd:element name="ongoingCall" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- title: &lt;name of identity&gt;
			message: Identity used by &lt;X&gt; function key not allowed
			 -->
			<xsd:element name="keyUsesFallbackIdentity" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- title: &lt;varies&gt;
			message: &lt;varies&gt;
			 -->
			<xsd:element name="migrationError" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- a notification created by any lua-script that wants the message-led to be on
			 -->
			<xsd:element name="luaOnNotification" type="msgSignalisation" minOccurs="0" default="on"/>
			<!-- a notification created by any lua-script that wants to be off
			 -->
			<xsd:element name="luaSilentNotification" type="msgSignalisation" minOccurs="0" default="silent"/>
			<!-- a notification created by any lua-script that wants to blink
			 -->
			<xsd:element name="luaBlinkingNotification" type="msgSignalisation" minOccurs="0" default="blink"/>
			<!-- a notification that pops up and shows the content of an incoming sip-MESSAGE
			 -->
			<xsd:element name="sipMessage" type="msgSignalisation" minOccurs="0" default="blink"/>
		</xsd:all>
	</xsd:complexType>

	<!-- How to signal a message of a certain type. on &#x3D; Message gets listed in messages-screen or notification drawer. It will cause the Message-LED to turn on, unless there is another message that overrides this with blinking. blink &#x3D; Message gets listed in messages-screen or notification drawer. It will cause the Message-LED to blink. &quot;silent &#x3D; Message gets listed in messages-screen or notification drawer, but doesn&#x27;t affect the message-LED-behaviour&quot; &quot;off &#x3D; Message never ever appears in messages-screen or notification drawer, thus also doesn&#x27;t affect the message-LED-behaviour&quot; -->
	<xsd:simpleType name="msgSignalisation">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="on"/>
			<xsd:enumeration value="blink"/>
			<xsd:enumeration value="silent"/>
			<xsd:enumeration value="off"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="leds">
		<xsd:all>
			<!-- When disabeled, LED of message-key will never turn on. -->
			<xsd:element name="enableMsgLed" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Describes a single auth token -->
	<xsd:complexType name="authToken">
		<xsd:all>
			<!-- The actual token -->
			<xsd:element name="token" minOccurs="0">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:minLength value="8"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- List of all auth-tokens. -->
	<xsd:complexType name="authTokens">
		<xsd:sequence>
			<xsd:element name="authToken" type="authToken" minOccurs="0" maxOccurs="5"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="remoteAccess">
		<xsd:all>
			<!-- enable remote access via http(s) - needed for action URLs (allowCallManipulationViaHttp) -->
			<xsd:element name="webd" type="xsd:boolean" minOccurs="0"/>
			<!-- enable remote access via adb -->
			<xsd:element name="adbd" type="xsd:boolean" minOccurs="0"/>
			<!-- allow http(s)-get-requests that control calls on the phone (start/end/hold/transfer/..) - can only be activated if remote acces via http(s) (webd) is allowed. -->
			<xsd:element name="allowCallManipulationViaHttp" type="xsd:boolean" minOccurs="0"/>
			<!-- server where phone sends call-events to. -->
			<xsd:element name="actionUrlServer" type="xsd:string" minOccurs="0"/>
			<xsd:element name="authTokens" type="authTokens" minOccurs="0"/>
			<xsd:element name="filterSettings" type="filterSettings" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Activation switch for selective showing of menu items + List of Settings main menus -->
	<xsd:complexType name="filterSettings">
		<xsd:all>
			<xsd:element name="filterActive" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="settingsFilterList" type="settingsFilterList" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- List of main menus that will be shown. (true &#x3D;&gt; show; false &#x3D;&gt; hide) -->
	<xsd:complexType name="settingsFilterList">
		<xsd:all>
			<xsd:element name="network" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="identities" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="bluetooth" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="wifi" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="sound" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="language" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="display" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="telephony" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="functions" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="cameras" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="update" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="provisioning" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="remoteaccess" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="apps" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="time_date" type="xsd:boolean" minOccurs="0" default="true"/>
			<xsd:element name="ldap" type="xsd:boolean" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Configuration of pre-installed apps and store. -->
	<xsd:complexType name="apps">
		<xsd:all>
			<!-- Enables installation of additional apps. -->
			<xsd:element name="allow_install" type="xsd:boolean" minOccurs="0"/>
			<!-- Enables access to pre-installed store &#x27;F-Droid&#x27;. -->
			<xsd:element name="store_enabled" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- Enables access to pre-installed browser &#x27;Firefox Klar&#x27;. -->
			<xsd:element name="browser_enabled" type="xsd:boolean" minOccurs="0" default="true"/>
			<!-- Enables access to pre-installed mail-app &#x27;K-9 Mail&#x27;. -->
			<xsd:element name="mail_enabled" type="xsd:boolean" minOccurs="0" default="true"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="timeAndDate">
		<xsd:all>
			<xsd:element name="ntpEnable" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="ntpServer" type="uri" minOccurs="0"/>
			<xsd:element name="timezone" type="timezone" minOccurs="0"/>
			<xsd:element name="timeHourFormat" type="timeHourFormat" minOccurs="0" default="clock24hours"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="locales">
		<xsd:all>
			<xsd:element name="deviceLanguage" type="language" minOccurs="0"/>
			<xsd:element name="webserverLanguage" type="language" minOccurs="0"/>
			<xsd:element name="deviceLocation" type="locale" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:simpleType name="locale">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="de_DE"/>
			<xsd:enumeration value="de_AT"/>
			<xsd:enumeration value="de_CH"/>
			<xsd:enumeration value="fr_CH"/>
			<xsd:enumeration value="it_CH"/>
			<xsd:enumeration value="en_GB"/>
			<xsd:enumeration value="fr_FR"/>
			<xsd:enumeration value="el_GR"/>
			<xsd:enumeration value="pl_PL"/>
			<xsd:enumeration value="es_ES"/>
			<xsd:enumeration value="nl_BE"/>
			<xsd:enumeration value="fr_BE"/>
			<xsd:enumeration value="de_BE"/>
			<xsd:enumeration value="nl_NL"/>
			<xsd:enumeration value="it_IT"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="language">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="de_DE"/>
			<xsd:enumeration value="en_GB"/>
			<xsd:enumeration value="fr_FR"/>
			<xsd:enumeration value="el_GR"/>
			<xsd:enumeration value="pl_PL"/>
			<xsd:enumeration value="es_ES"/>
			<xsd:enumeration value="nl_NL"/>
			<xsd:enumeration value="it_IT"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- distinguishes between 10 PM and 22:00 time representation -->
	<xsd:simpleType name="timeHourFormat">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="clock12hours"/>
			<xsd:enumeration value="clock24hours"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- time zone description in olsen names. Supports correct handling for summer/winter times
	 -->
	<xsd:simpleType name="timezone">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Pacific/Midway"/>
			<xsd:enumeration value="Pacific/Honolulu"/>
			<xsd:enumeration value="America/Anchorage"/>
			<xsd:enumeration value="America/Los_Angeles"/>
			<xsd:enumeration value="America/Tijuana"/>
			<xsd:enumeration value="America/Phoenix"/>
			<xsd:enumeration value="America/Chihuahua"/>
			<xsd:enumeration value="America/Denver"/>
			<xsd:enumeration value="America/Costa_Rica"/>
			<xsd:enumeration value="America/Chicago"/>
			<xsd:enumeration value="America/Mexico_City"/>
			<xsd:enumeration value="America/Regina"/>
			<xsd:enumeration value="America/Bogota"/>
			<xsd:enumeration value="America/New_York"/>
			<xsd:enumeration value="America/Caracas"/>
			<xsd:enumeration value="America/Barbados"/>
			<xsd:enumeration value="America/Halifax"/>
			<xsd:enumeration value="America/Manaus"/>
			<xsd:enumeration value="America/Santiago"/>
			<xsd:enumeration value="America/St_Johns"/>
			<xsd:enumeration value="America/Recife"/>
			<xsd:enumeration value="America/Sao_Paulo"/>
			<xsd:enumeration value="America/Buenos_Aires"/>
			<xsd:enumeration value="America/Godthab"/>
			<xsd:enumeration value="America/Montevideo"/>
			<xsd:enumeration value="Atlantic/South_Georgia"/>
			<xsd:enumeration value="Atlantic/Azores"/>
			<xsd:enumeration value="Atlantic/Cape_Verde"/>
			<xsd:enumeration value="Africa/Casablanca"/>
			<xsd:enumeration value="Europe/London"/>
			<xsd:enumeration value="Europe/Amsterdam"/>
			<xsd:enumeration value="Europe/Belgrade"/>
			<xsd:enumeration value="Europe/Berlin"/>
			<xsd:enumeration value="Europe/Brussels"/>
			<xsd:enumeration value="Europe/Madrid"/>
			<xsd:enumeration value="Europe/Sarajevo"/>
			<xsd:enumeration value="Africa/Windhoek"/>
			<xsd:enumeration value="Africa/Brazzaville"/>
			<xsd:enumeration value="Asia/Amman"/>
			<xsd:enumeration value="Europe/Athens"/>
			<xsd:enumeration value="Europe/Istanbul"/>
			<xsd:enumeration value="Asia/Beirut"/>
			<xsd:enumeration value="Africa/Cairo"/>
			<xsd:enumeration value="Europe/Helsinki"/>
			<xsd:enumeration value="Asia/Jerusalem"/>
			<xsd:enumeration value="Europe/Minsk"/>
			<xsd:enumeration value="Africa/Harare"/>
			<xsd:enumeration value="Asia/Baghdad"/>
			<xsd:enumeration value="Europe/Moscow"/>
			<xsd:enumeration value="Asia/Kuwait"/>
			<xsd:enumeration value="Africa/Nairobi"/>
			<xsd:enumeration value="Asia/Tehran"/>
			<xsd:enumeration value="Asia/Baku"/>
			<xsd:enumeration value="Asia/Tbilisi"/>
			<xsd:enumeration value="Asia/Yerevan"/>
			<xsd:enumeration value="Asia/Dubai"/>
			<xsd:enumeration value="Asia/Kabul"/>
			<xsd:enumeration value="Asia/Karachi"/>
			<xsd:enumeration value="Asia/Oral"/>
			<xsd:enumeration value="Asia/Yekaterinburg"/>
			<xsd:enumeration value="Asia/Calcutta"/>
			<xsd:enumeration value="Asia/Colombo"/>
			<xsd:enumeration value="Asia/Katmandu"/>
			<xsd:enumeration value="Asia/Almaty"/>
			<xsd:enumeration value="Asia/Rangoon"/>
			<xsd:enumeration value="Asia/Krasnoyarsk"/>
			<xsd:enumeration value="Asia/Bangkok"/>
			<xsd:enumeration value="Asia/Jakarta"/>
			<xsd:enumeration value="Asia/Shanghai"/>
			<xsd:enumeration value="Asia/Hong_Kong"/>
			<xsd:enumeration value="Asia/Irkutsk"/>
			<xsd:enumeration value="Asia/Kuala_Lumpur"/>
			<xsd:enumeration value="Australia/Perth"/>
			<xsd:enumeration value="Asia/Taipei"/>
			<xsd:enumeration value="Asia/Seoul"/>
			<xsd:enumeration value="Asia/Tokyo"/>
			<xsd:enumeration value="Asia/Yakutsk"/>
			<xsd:enumeration value="Australia/Adelaide"/>
			<xsd:enumeration value="Australia/Darwin"/>
			<xsd:enumeration value="Australia/Brisbane"/>
			<xsd:enumeration value="Australia/Hobart"/>
			<xsd:enumeration value="Australia/Sydney"/>
			<xsd:enumeration value="Asia/Vladivostok"/>
			<xsd:enumeration value="Pacific/Guam"/>
			<xsd:enumeration value="Asia/Magadan"/>
			<xsd:enumeration value="Pacific/Noumea"/>
			<xsd:enumeration value="Pacific/Majuro"/>
			<xsd:enumeration value="Pacific/Auckland"/>
			<xsd:enumeration value="Pacific/Fiji"/>
			<xsd:enumeration value="Pacific/Tongatapu"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="logging">
		<xsd:all>
			<xsd:element name="extendedLogging" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="remotes" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="remoteLog" type="remoteLog" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="remoteLog">
		<xsd:all>
			<xsd:element name="server" type="hostname"/>
			<xsd:element name="port" type="port"/>
			<xsd:element name="protocol" type="logProtocol"/>
			<xsd:element name="filter" type="logcatFilter" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- Protocol to use for logging -->
	<xsd:simpleType name="logProtocol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="udp"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Hostname of the log server -->
	<xsd:simpleType name="hostname">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Port of the log server -->
	<xsd:simpleType name="port">
		<xsd:restriction base="xsd:integer">
			<xsd:minInclusive value="1"/>
			<xsd:maxInclusive value="65535"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- Filter to use for logging. A space-separated list of TAG[:Priority]. TAG can be &quot;*&quot; for all, Priority can be one of S:silent E:error W:warning I:info D:debug V:verbose. Default priority if omitted is [V]erbose. -->
	<xsd:simpleType name="logcatFilter">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[\S]+(:[SEWIDV])?( [\S]+(:[SEWIDV])?)*"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- &#x27;&#x27;&#x27;Libraries can be included into other lua-code by using its name within a require-statement. E.g.: &#x60;require(&quot;myAwesomeLib&quot;)&#x60;&#x27;&#x27;&#x27;
	 -->
	<xsd:complexType name="luaLibraries">
		<xsd:sequence>
			<xsd:element name="luaLibrary" type="luaScript" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- AutoStarters are lua-scripts that continously run in the background. -->
	<xsd:complexType name="luaAutoStarters">
		<xsd:sequence>
			<xsd:element name="luaScript" type="luaScript" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="luaScript">
		<xsd:all>
			<xsd:element name="code" type="luaCode" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="name" type="xsd:string"/>
	</xsd:complexType>

	<!-- flexible script defined config values -->
	<xsd:complexType name="luaConfig">
		<xsd:sequence>
			<xsd:element name="luaConfigPair" type="luaConfigPair" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="luaConfigPair">
		<xsd:all>
			<!-- an arbitrary value. Data, that a script wants stored or relies on. -->
			<xsd:element name="value" type="xsd:string" minOccurs="0"/>
		</xsd:all>
		<!-- an arbitrary key value. should be uniqe for the script using it, to prevent naming collusions -->
		<xsd:attribute name="key" type="xsd:string" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="resources">
		<xsd:all>
			<xsd:element name="strings" type="stringResources" minOccurs="0"/>
			<xsd:element name="drawables" type="drawableResources" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<xsd:complexType name="drawableResources">
		<xsd:sequence>
			<xsd:element name="drawable" type="drawableResource" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="stringResources">
		<xsd:sequence>
			<xsd:element name="string" type="stringResource" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="stringResource">
		<xsd:all>
			<xsd:element name="text" type="xsd:string"/>
		</xsd:all>
		<xsd:attribute name="locale" type="locale"/>
		<xsd:attribute name="name" type="resourceName" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="drawableResource">
		<xsd:all>
			<xsd:element name="icon" type="xsd:string"/>
		</xsd:all>
		<xsd:attribute name="name" type="resourceName" use="required"/>
	</xsd:complexType>

	<xsd:simpleType name="resourceName">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="([a-z_]*)"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- List of local contacts -->
	<xsd:complexType name="contactList">
		<xsd:sequence>
			<xsd:element name="contact" type="contact" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- a contact list entry -->
	<xsd:complexType name="contact">
		<xsd:all>
			<!-- The display name for the contact. -->
			<xsd:element name="displayName" type="xsd:string" minOccurs="0"/>
			<!-- The given name for the contact. -->
			<xsd:element name="givenName" type="xsd:string" minOccurs="0"/>
			<!-- The middle name for the contact. -->
			<xsd:element name="middleName" type="xsd:string" minOccurs="0"/>
			<!-- The family name for the contact. -->
			<xsd:element name="familyName" type="xsd:string" minOccurs="0"/>
			<!-- The nick name for the contact. -->
			<xsd:element name="nickName" type="xsd:string" minOccurs="0"/>
			<!-- The contact&#x27;s honorific prefix, e.g. &quot;Sir&quot; -->
			<xsd:element name="namePrefix" type="xsd:string" minOccurs="0"/>
			<!-- The contact&#x27;s honorific suffix, e.g. &quot;Jr&quot; -->
			<xsd:element name="nameSuffix" type="xsd:string" minOccurs="0"/>
			<!-- The phonetic version of the given name for the contact. -->
			<xsd:element name="phoneticGivenName" type="xsd:string" minOccurs="0"/>
			<!-- The phonetic version of the middle name for the contact. -->
			<xsd:element name="phoneticMiddleName" type="xsd:string" minOccurs="0"/>
			<!-- The phonetic version of the family name for the contact. -->
			<xsd:element name="phoneticFamilyName" type="xsd:string" minOccurs="0"/>
			<!-- The contact ist starred, if it is a favorite contact (values 0 or 1) -->
			<xsd:element name="starred" type="xsd:string" minOccurs="0"/>
			<!-- The custome ringtone of the contact -->
			<xsd:element name="ringtone" type="xsd:string" minOccurs="0"/>
			<!-- contact photo as base64 string -->
			<xsd:element name="photo" type="xsd:string" minOccurs="0"/>
			<!-- List of phone numbers. -->
			<xsd:element name="phoneNumberList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="phoneNumber" type="phoneNumber" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of e-mail addresses. -->
			<xsd:element name="emailAddressList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="emailAddress" type="emailAddress" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of postal addresses. -->
			<xsd:element name="postalAddressList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="postalAddress" type="postalAddress" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of organizations. -->
			<xsd:element name="organizationList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="organization" type="organization" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<!-- List of unspecified data of the contact. -->
			<xsd:element name="additionalDataList" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="additionalData" type="additionalData" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:all>
	</xsd:complexType>

	<!-- a phone number entry -->
	<xsd:complexType name="phoneNumber">
		<xsd:all>
			<!-- The number is the primary number (values 0 or 1) -->
			<xsd:element name="isPrimary" type="xsd:string" minOccurs="0"/>
			<!-- Type of Number (like home, work, mobile, fax, etc) -->
			<xsd:element name="detailType" type="xsd:string" minOccurs="0"/>
			<!-- The phone number as the user entered it. -->
			<xsd:element name="number" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- an e-mail address entry -->
	<xsd:complexType name="emailAddress">
		<xsd:all>
			<!-- Type of e-mail address (like home, work, other, mobile, etc) -->
			<xsd:element name="detailType" type="xsd:string" minOccurs="0"/>
			<!-- The e-mail address as the user entered it. -->
			<xsd:element name="address" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- a postal address entry -->
	<xsd:complexType name="postalAddress">
		<xsd:all>
			<!-- Type of postal address (like home, work, other, etc) -->
			<xsd:element name="detailType" type="xsd:string" minOccurs="0"/>
			<!-- Can be street, avenue, road, etc. This element also includes the house number and room/apartment/flat/floor number. -->
			<xsd:element name="street" type="xsd:string" minOccurs="0"/>
			<!-- Postal code. Usually country-wide, but sometimes specific to the city (e.g. &quot;2&quot; in &quot;Dublin 2, Ireland&quot; addresses). -->
			<xsd:element name="postcode" type="xsd:string" minOccurs="0"/>
			<!-- A state, province, county (in Ireland), Bundesland (in Germany), departement (in France), etc. -->
			<xsd:element name="region" type="xsd:string" minOccurs="0"/>
			<!-- Can be city, village, town, borough, etc. This is the postal town and not necessarily the place of residence or place of business. -->
			<xsd:element name="city" type="xsd:string" minOccurs="0"/>
			<!-- The name or code of the country. -->
			<xsd:element name="country" type="xsd:string" minOccurs="0"/>
			<!-- This is used to disambiguate a street address when a city contains more than one street with the same name, or to specify a small place whose mail is routed through a larger postal town. In China it could be a county or a minor city. -->
			<xsd:element name="neighborhood" type="xsd:string" minOccurs="0"/>
			<!-- Covers actual P.O. boxes, drawers, locked bags, etc. This is usually but not always mutually exclusive with street. -->
			<xsd:element name="pobox" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- a organization entry -->
	<xsd:complexType name="organization">
		<xsd:all>
			<!-- The company as the user entered it. -->
			<xsd:element name="company" type="xsd:string" minOccurs="0"/>
			<!-- The position title at this company as the user entered it. -->
			<xsd:element name="title" type="xsd:string" minOccurs="0"/>
			<!-- The department at this company as the user entered it. -->
			<xsd:element name="department" type="xsd:string" minOccurs="0"/>
			<!-- The job description at this company as the user entered it. -->
			<xsd:element name="jobDescription" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- an additional unspecified data entry for data that could not be assigned to any other mimetype -->
	<xsd:complexType name="additionalData">
		<xsd:all>
			<xsd:element name="mimetype" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data1" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data2" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data3" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data4" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data5" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data6" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data7" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data8" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data9" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data10" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data11" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data12" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data13" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data14" type="xsd:string" minOccurs="0"/>
			<xsd:element name="data15" type="xsd:string" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- designing the home screen -->
	<xsd:complexType name="homeScreenDesign">
		<xsd:all>
			<xsd:element name="backgroundImage" type="backgroundImage" minOccurs="0"/>
		</xsd:all>
	</xsd:complexType>

	<!-- the wallpaper image may be the link to an image (http/https) on a webserver OR a base64 encoded image, should be jpg or png not bigger than 1MB. -->
	<xsd:simpleType name="backgroundImage">
		<xsd:restriction base="xsd:string">
		</xsd:restriction>
	</xsd:simpleType>

  <!-- Structure of the android wifi settings
    Note: no password can be extracted, but you can restore with a password set.
    Since the settings are very technical, it is suggested to configure a wifi on your devices and creating a backup afterwards.
  -->
  <xsd:element name="wifi" type="wifiType"/>
  <xsd:complexType name="wifiType">
    <xsd:all>
      <xsd:element name="enabled" type="xsd:boolean" minOccurs="0"/>
      <xsd:element name="networks" type="networksType" minOccurs="0"/>
    </xsd:all>
    <!-- The patch attribute controls whether the whole element is patched or overwritten -->
    <xsd:attribute name="patch" type="xsd:boolean" default="true"/>
    <!-- version attribute -->
    <xsd:attribute name="version" type="xsd:string" default="1.20.8"/>
  </xsd:complexType>
  <xsd:complexType name="networksType">
    <xsd:sequence>
      <xsd:element name="configuration" type="wifiConfiguration" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="wifiConfiguration">
    <xsd:sequence>
      <xsd:element name="wepPassword" type="xsd:string" minOccurs="0"/>
      <xsd:element name="wpa2Password" type="xsd:string" minOccurs="0"/>
      <xsd:element name="bssid" type="xsd:string" minOccurs="0"/>
      <xsd:element name="fqdn" type="xsd:string" minOccurs="0"/>
      <xsd:element name="isHiddenWifi" type="xsd:boolean" minOccurs="0"/>
      <xsd:element name="priority" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="allowedAuthAlgorithms" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedGroupCiphers" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedKeyManagement" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedPairwiseCiphers" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="allowedProtocols" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="wpa2Enterprise" type="wpa2Enterprise" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/> 
  </xsd:complexType>
  <xsd:complexType name="wpa2Enterprise">
    <xsd:all>
      <xsd:element name="method" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="phase2" type="xsd:integer" minOccurs="0"/>
      <xsd:element name="anonymousIdentity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="identity" type="xsd:string" minOccurs="0"/>
      <xsd:element name="password" type="xsd:string" minOccurs="0"/>
      <xsd:element name="altSubjectMatch" type="xsd:string" minOccurs="0"/>
      <xsd:element name="domainSuffixMatch" type="xsd:string" minOccurs="0"/>
      <xsd:element name="plmn" type="xsd:string" minOccurs="0"/>
      <xsd:element name="realm" type="xsd:string" minOccurs="0"/>
    </xsd:all>
  </xsd:complexType>

  <xsd:element name="operations">
    <xsd:complexType>
      <xsd:sequence>
	<xsd:element name="delete" maxOccurs="unbounded">
    	  <xsd:complexType>
            <xsd:attribute name="path" type="xsd:string" />
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
