initial DotCMIS check in

git-svn-id: https://svn.apache.org/repos/asf/incubator/chemistry/dotcmis/trunk@1061233 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/DEPENDENCIES b/DEPENDENCIES
new file mode 100644
index 0000000..e25fc4e
--- /dev/null
+++ b/DEPENDENCIES
@@ -0,0 +1,3 @@
+DotCMIS requires .NET Framework 3.5 or higher.

+

+The DotCMIS unit tests require NUnit 2.5.

diff --git a/DotCMIS.sln b/DotCMIS.sln
new file mode 100644
index 0000000..1b740cb
--- /dev/null
+++ b/DotCMIS.sln
@@ -0,0 +1,45 @@
+

+Microsoft Visual Studio Solution File, Format Version 11.00

+# Visual Studio 2010

+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotCMIS", "DotCMIS\DotCMIS.csproj", "{529EF90F-A34C-4426-A4F9-65113AC23841}"

+EndProject

+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotCMISUnitTest", "DotCMISUnitTest\DotCMISUnitTest.csproj", "{B4343D5F-BA78-4925-99C5-A0FFD80F862C}"

+EndProject

+Global

+	GlobalSection(TestCaseManagementSettings) = postSolution

+		CategoryFile = DotCMIS.vsmdi

+	EndGlobalSection

+	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+		Debug|Any CPU = Debug|Any CPU

+		Debug|Mixed Platforms = Debug|Mixed Platforms

+		Debug|x86 = Debug|x86

+		Release|Any CPU = Release|Any CPU

+		Release|Mixed Platforms = Release|Mixed Platforms

+		Release|x86 = Release|x86

+	EndGlobalSection

+	GlobalSection(ProjectConfigurationPlatforms) = postSolution

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Debug|Any CPU.Build.0 = Debug|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Debug|x86.ActiveCfg = Debug|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Release|Any CPU.ActiveCfg = Release|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Release|Any CPU.Build.0 = Release|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Release|Mixed Platforms.Build.0 = Release|Any CPU

+		{529EF90F-A34C-4426-A4F9-65113AC23841}.Release|x86.ActiveCfg = Release|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Debug|Any CPU.Build.0 = Debug|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Debug|x86.ActiveCfg = Debug|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Release|Any CPU.ActiveCfg = Release|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Release|Any CPU.Build.0 = Release|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Release|Mixed Platforms.Build.0 = Release|Any CPU

+		{B4343D5F-BA78-4925-99C5-A0FFD80F862C}.Release|x86.ActiveCfg = Release|Any CPU

+	EndGlobalSection

+	GlobalSection(SolutionProperties) = preSolution

+		HideSolutionNode = FALSE

+	EndGlobalSection

+EndGlobal

diff --git a/DotCMIS.suo b/DotCMIS.suo
new file mode 100644
index 0000000..1fde0eb
--- /dev/null
+++ b/DotCMIS.suo
Binary files differ
diff --git a/DotCMIS/DotCMIS.csproj b/DotCMIS/DotCMIS.csproj
new file mode 100644
index 0000000..8c7534a
--- /dev/null
+++ b/DotCMIS/DotCMIS.csproj
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <PropertyGroup>

+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

+    <ProductVersion>8.0.30703</ProductVersion>

+    <SchemaVersion>2.0</SchemaVersion>

+    <ProjectGuid>{529EF90F-A34C-4426-A4F9-65113AC23841}</ProjectGuid>

+    <OutputType>Library</OutputType>

+    <AppDesignerFolder>Properties</AppDesignerFolder>

+    <RootNamespace>DotCMIS</RootNamespace>

+    <AssemblyName>DotCMIS</AssemblyName>

+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

+    <FileAlignment>512</FileAlignment>

+  </PropertyGroup>

+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

+    <DebugSymbols>true</DebugSymbols>

+    <DebugType>full</DebugType>

+    <Optimize>false</Optimize>

+    <OutputPath>bin\Debug\</OutputPath>

+    <DefineConstants>DEBUG;TRACE</DefineConstants>

+    <ErrorReport>prompt</ErrorReport>

+    <WarningLevel>4</WarningLevel>

+  </PropertyGroup>

+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

+    <DebugType>pdbonly</DebugType>

+    <Optimize>true</Optimize>

+    <OutputPath>bin\Release\</OutputPath>

+    <DefineConstants>TRACE</DefineConstants>

+    <ErrorReport>prompt</ErrorReport>

+    <WarningLevel>4</WarningLevel>

+  </PropertyGroup>

+  <ItemGroup>

+    <Reference Include="System" />

+    <Reference Include="System.Core" />

+    <Reference Include="System.Runtime.Serialization" />

+    <Reference Include="System.ServiceModel" />

+    <Reference Include="System.Web" />

+    <Reference Include="System.Xml.Linq" />

+    <Reference Include="System.Data.DataSetExtensions" />

+    <Reference Include="System.Data" />

+    <Reference Include="System.Xml" />

+  </ItemGroup>

+  <ItemGroup>

+    <Compile Include="binding\atompub\atompub-parser.cs" />

+    <Compile Include="binding\atompub\atompub.cs" />

+    <Compile Include="binding\atompub\atompub-linkcache.cs" />

+    <Compile Include="binding\atompub\atompub-writer.cs" />

+    <Compile Include="binding\binding-caches.cs" />

+    <Compile Include="binding\binding-impl.cs" />

+    <Compile Include="binding\binding-intf.cs" />

+    <Compile Include="binding\http.cs" />

+    <Compile Include="binding\services.cs" />

+    <Compile Include="binding\converter.cs" />

+    <Compile Include="binding\webservices\webservices.cs" />

+    <Compile Include="client\client-intf.cs" />

+    <Compile Include="client\client-impl.cs" />

+    <Compile Include="const.cs" />

+    <Compile Include="data\data-impl.cs" />

+    <Compile Include="data\data-intf.cs" />

+    <Compile Include="enums.cs" />

+    <Compile Include="exceptions.cs" />

+    <Compile Include="data\extensions.cs" />

+    <Compile Include="Properties\AssemblyInfo.cs" />

+    <Compile Include="Service References\CMISWebServicesReference\Reference.cs">

+      <AutoGen>True</AutoGen>

+      <DesignTime>True</DesignTime>

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </Compile>

+  </ItemGroup>

+  <ItemGroup />

+  <ItemGroup>

+    <WCFMetadata Include="Service References\" />

+  </ItemGroup>

+  <ItemGroup>

+    <None Include="app.config" />

+    <None Include="Service References\CMISWebServicesReference\CMIS-Core.xsd">

+      <SubType>Designer</SubType>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\CMIS-Messaging.xsd">

+      <SubType>Designer</SubType>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\CMISWebServices.wsdl" />

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisACLType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisAllowableActionsType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisContentStreamType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisExtensionType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisObjectInFolderContainerType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisObjectListType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisObjectParentsType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisObjectType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisPropertiesType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisRenditionType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisRepositoryEntryType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisTypeContainer.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+    <None Include="Service References\CMISWebServicesReference\DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete.datasource">

+      <DependentUpon>Reference.svcmap</DependentUpon>

+    </None>

+  </ItemGroup>

+  <ItemGroup>

+    <WCFMetadataStorage Include="Service References\CMISWebServicesReference\" />

+  </ItemGroup>

+  <ItemGroup>

+    <None Include="Service References\CMISWebServicesReference\configuration91.svcinfo" />

+  </ItemGroup>

+  <ItemGroup>

+    <None Include="Service References\CMISWebServicesReference\configuration.svcinfo" />

+  </ItemGroup>

+  <ItemGroup>

+    <None Include="Service References\CMISWebServicesReference\Reference.svcmap">

+      <Generator>WCF Proxy Generator</Generator>

+      <LastGenOutput>Reference.cs</LastGenOutput>

+    </None>

+  </ItemGroup>

+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+       Other similar extension points exist, see Microsoft.Common.targets.

+  <Target Name="BeforeBuild">

+  </Target>

+  <Target Name="AfterBuild">

+  </Target>

+  -->

+</Project>
\ No newline at end of file
diff --git a/DotCMIS/Properties/AssemblyInfo.cs b/DotCMIS/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..736b520
--- /dev/null
+++ b/DotCMIS/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;

+using System.Runtime.CompilerServices;

+using System.Runtime.InteropServices;

+

+// General Information about an assembly is controlled through the following 

+// set of attributes. Change these attribute values to modify the information

+// associated with an assembly.

+[assembly: AssemblyTitle("DotCMIS")]

+[assembly: AssemblyDescription("")]

+[assembly: AssemblyConfiguration("")]

+[assembly: AssemblyCompany("Apache Software Foundation")]

+[assembly: AssemblyProduct("DotCMIS")]

+[assembly: AssemblyCopyright("")]

+[assembly: AssemblyTrademark("")]

+[assembly: AssemblyCulture("")]

+

+// Setting ComVisible to false makes the types in this assembly not visible 

+// to COM components.  If you need to access a type in this assembly from 

+// COM, set the ComVisible attribute to true on that type.

+[assembly: ComVisible(false)]

+

+// The following GUID is for the ID of the typelib if this project is exposed to COM

+[assembly: Guid("ac118463-00ec-4e63-8c93-b45760f9abcf")]

+

+// Version information for an assembly consists of the following four values:

+//

+//      Major Version

+//      Minor Version 

+//      Build Number

+//      Revision

+//

+// You can specify all the values or you can default the Build and Revision Numbers 

+// by using the '*' as shown below:

+// [assembly: AssemblyVersion("1.0.*")]

+[assembly: AssemblyVersion("0.1.0.0")]

+[assembly: AssemblyFileVersion("1.0.0.0")]

diff --git a/DotCMIS/Service References/CMISWebServicesReference/CMIS-Core.xsd b/DotCMIS/Service References/CMISWebServicesReference/CMIS-Core.xsd
new file mode 100644
index 0000000..9456768
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/CMIS-Core.xsd
@@ -0,0 +1,907 @@
+<?xml version="1.0" encoding="utf-8"?>

+<xs:schema xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/ns/cmis/core/200908/" version="1.0" jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">

+  <xs:simpleType name="enumDecimalPrecision">

+    <xs:restriction base="xs:integer">

+      <xs:enumeration value="32" />

+      <xs:enumeration value="64" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumContentStreamAllowed">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="notallowed" />

+      <xs:enumeration value="allowed" />

+      <xs:enumeration value="required" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumCardinality">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="single" />

+      <xs:enumeration value="multi" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumUpdatability">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="readonly" />

+      <xs:enumeration value="readwrite" />

+      <xs:enumeration value="whencheckedout" />

+      <xs:enumeration value="oncreate" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumDateTimeResolution">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="year" />

+      <xs:enumeration value="date" />

+      <xs:enumeration value="time" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumPropertyType">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="boolean" />

+      <xs:enumeration value="id" />

+      <xs:enumeration value="integer" />

+      <xs:enumeration value="datetime" />

+      <xs:enumeration value="decimal" />

+      <xs:enumeration value="html" />

+      <xs:enumeration value="string" />

+      <xs:enumeration value="uri" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumBaseObjectTypeIds">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:document" />

+      <xs:enumeration value="cmis:folder" />

+      <xs:enumeration value="cmis:relationship" />

+      <xs:enumeration value="cmis:policy" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumCapabilityQuery">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="none" />

+      <xs:enumeration value="metadataonly" />

+      <xs:enumeration value="fulltextonly" />

+      <xs:enumeration value="bothseparate" />

+      <xs:enumeration value="bothcombined" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumCapabilityJoin">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="none" />

+      <xs:enumeration value="inneronly" />

+      <xs:enumeration value="innerandouter" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumCapabilityContentStreamUpdates">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="anytime" />

+      <xs:enumeration value="pwconly" />

+      <xs:enumeration value="none" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumVersioningState">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="none" />

+      <xs:enumeration value="checkedout" />

+      <xs:enumeration value="minor" />

+      <xs:enumeration value="major" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumUnfileObject">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="unfile" />

+      <xs:enumeration value="deletesinglefiled" />

+      <xs:enumeration value="delete" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumRelationshipDirection">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="source" />

+      <xs:enumeration value="target" />

+      <xs:enumeration value="either" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumIncludeRelationships">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="none" />

+      <xs:enumeration value="source" />

+      <xs:enumeration value="target" />

+      <xs:enumeration value="both" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumPropertiesBase">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:name" />

+      <xs:enumeration value="cmis:objectId" />

+      <xs:enumeration value="cmis:objectTypeId" />

+      <xs:enumeration value="cmis:baseTypeId" />

+      <xs:enumeration value="cmis:createdBy" />

+      <xs:enumeration value="cmis:creationDate" />

+      <xs:enumeration value="cmis:lastModifiedBy" />

+      <xs:enumeration value="cmis:lastModificationDate" />

+      <xs:enumeration value="cmis:changeToken" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumPropertiesDocument">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:isImmutable" />

+      <xs:enumeration value="cmis:isLatestVersion" />

+      <xs:enumeration value="cmis:isMajorVersion" />

+      <xs:enumeration value="cmis:isLatestMajorVersion" />

+      <xs:enumeration value="cmis:versionLabel" />

+      <xs:enumeration value="cmis:versionSeriesId" />

+      <xs:enumeration value="cmis:isVersionSeriesCheckedOut" />

+      <xs:enumeration value="cmis:versionSeriesCheckedOutBy" />

+      <xs:enumeration value="cmis:versionSeriesCheckedOutId" />

+      <xs:enumeration value="cmis:checkinComment" />

+      <xs:enumeration value="cmis:contentStreamLength" />

+      <xs:enumeration value="cmis:contentStreamMimeType" />

+      <xs:enumeration value="cmis:contentStreamFileName" />

+      <xs:enumeration value="cmis:contentStreamId" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumPropertiesFolder">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:parentId" />

+      <xs:enumeration value="cmis:allowedChildObjectTypeIds" />

+      <xs:enumeration value="cmis:path" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumPropertiesRelationship">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:sourceId" />

+      <xs:enumeration value="cmis:targetId" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumPropertiesPolicy">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:policyText" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:attributeGroup name="cmisUndefinedAttribute">

+    <xs:anyAttribute namespace="##other" processContents="lax" />

+  </xs:attributeGroup>

+  <xs:complexType name="cmisObjectType">

+    <xs:sequence>

+      <xs:element minOccurs="0" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="allowableActions" type="cmis:cmisAllowableActionsType" />

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="relationship" type="cmis:cmisObjectType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="changeEventInfo" type="cmis:cmisChangeEventType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="acl" type="cmis:cmisAccessControlListType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="exactACL" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="policyIds" type="cmis:cmisListOfIdsType" />

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="rendition" type="cmis:cmisRenditionType" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:attribute name="key" type="xs:string" />

+  <xs:attribute name="index" type="xs:integer" />

+  <xs:complexType name="cmisPropertiesType">

+    <xs:sequence>

+      <xs:choice minOccurs="0" maxOccurs="unbounded">

+        <xs:annotation>

+          <xs:appinfo>

+            <jaxb:property name="property" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" />

+          </xs:appinfo>

+        </xs:annotation>

+        <xs:element name="propertyBoolean" nillable="true" type="cmis:cmisPropertyBoolean" />

+        <xs:element name="propertyId" nillable="true" type="cmis:cmisPropertyId" />

+        <xs:element name="propertyInteger" nillable="true" type="cmis:cmisPropertyInteger" />

+        <xs:element name="propertyDateTime" nillable="true" type="cmis:cmisPropertyDateTime" />

+        <xs:element name="propertyDecimal" nillable="true" type="cmis:cmisPropertyDecimal" />

+        <xs:element name="propertyHtml" nillable="true" type="cmis:cmisPropertyHtml" />

+        <xs:element name="propertyString" nillable="true" type="cmis:cmisPropertyString" />

+        <xs:element name="propertyUri" nillable="true" type="cmis:cmisPropertyUri" />

+      </xs:choice>

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisProperty">

+    <xs:attribute name="propertyDefinitionId" use="optional">

+      <xs:annotation>

+        <xs:documentation>
+					This is the property definition id for this
+					property instance. This is
+					not required to be set when used as a
+					default value. This is
+					required to be set when used for query result
+					set or returning
+					properties on an object.
+		</xs:documentation>

+      </xs:annotation>

+    </xs:attribute>

+    <xs:attribute name="localName" use="optional">

+      <xs:annotation>

+        <xs:documentation>
+					This is the localname as defined by the property
+					definition
+				</xs:documentation>

+      </xs:annotation>

+    </xs:attribute>

+    <xs:attribute name="displayName" use="optional">

+      <xs:annotation>

+        <xs:documentation>
+					This is the displayname as defined by the property
+					definition
+				</xs:documentation>

+      </xs:annotation>

+    </xs:attribute>

+    <xs:attribute name="queryName" use="optional">

+      <xs:annotation>

+        <xs:documentation>
+					This is the queryName. This must be specified if
+					this is the result of a query. If aliases are used, the alias is to
+					be specified here instead of the queryName.
+				</xs:documentation>

+      </xs:annotation>

+    </xs:attribute>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyBoolean">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:boolean" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyId">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:string" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyInteger">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:integer" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyDateTime">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:dateTime" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyDecimal">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:decimal" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyHtml">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:string" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyString">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:string" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyUri">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisProperty">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:anyURI" />

+          <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoice">

+    <xs:attribute name="displayName" use="required" />

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceBoolean">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:boolean" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceBoolean" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceId">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:string" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceId" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceInteger">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:integer" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceInteger" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceDateTime">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:dateTime" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceDateTime" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceDecimal">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:decimal" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceDecimal" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceHtml">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:string" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceHtml" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceString">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:string" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceString" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisChoiceUri">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisChoice">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="value" type="xs:anyURI" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceUri" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisAllowableActionsType">

+    <xs:sequence>

+      <xs:element minOccurs="0" maxOccurs="1" name="canDeleteObject" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canUpdateProperties" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetFolderTree" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetProperties" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetObjectRelationships" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetObjectParents" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetFolderParent" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetDescendants" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canMoveObject" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canDeleteContentStream" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canCheckOut" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canCancelCheckOut" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canCheckIn" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canSetContentStream" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetAllVersions" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canAddObjectToFolder" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canRemoveObjectFromFolder" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetContentStream" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canApplyPolicy" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetAppliedPolicies" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canRemovePolicy" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetChildren" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canCreateDocument" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canCreateFolder" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canCreateRelationship" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canDeleteTree" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetRenditions" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canGetACL" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="canApplyACL" type="xs:boolean" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisListOfIdsType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="unbounded" name="id" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyDefinitionType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="id" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="localName" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="localNamespace" type="xs:anyURI" />

+      <xs:element minOccurs="0" maxOccurs="1" name="displayName" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="queryName" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="propertyType" type="cmis:enumPropertyType" />

+      <xs:element minOccurs="1" maxOccurs="1" name="cardinality" type="cmis:enumCardinality" />

+      <xs:element minOccurs="1" maxOccurs="1" name="updatability" type="cmis:enumUpdatability" />

+      <xs:element minOccurs="0" maxOccurs="1" name="inherited" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="required" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="queryable" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="orderable" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="openChoice" type="xs:boolean" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyBooleanDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyBoolean" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceBoolean" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyIdDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyId" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceId" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyIntegerDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyInteger" />

+          <xs:element minOccurs="0" maxOccurs="1" name="maxValue" type="xs:integer" />

+          <xs:element minOccurs="0" maxOccurs="1" name="minValue" type="xs:integer" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceInteger" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyDateTimeDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyDateTime" />

+          <xs:element minOccurs="0" maxOccurs="1" name="resolution" type="cmis:enumDateTimeResolution" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceDateTime" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyDecimalDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyDecimal" />

+          <xs:element minOccurs="0" maxOccurs="1" name="maxValue" type="xs:decimal" />

+          <xs:element minOccurs="0" maxOccurs="1" name="minValue" type="xs:decimal" />

+          <xs:element minOccurs="0" maxOccurs="1" name="precision" type="cmis:enumDecimalPrecision" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceDecimal" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyHtmlDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyHtml" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceHtml" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyStringDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyString" />

+          <xs:element minOccurs="0" maxOccurs="1" name="maxLength" type="xs:integer" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceString" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisPropertyUriDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisPropertyDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="cmis:cmisPropertyUri" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="choice" type="cmis:cmisChoiceUri" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisTypeDefinitionType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="id" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="localName" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="localNamespace" nillable="true" type="xs:anyURI" />

+      <xs:element minOccurs="0" maxOccurs="1" name="displayName" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="queryName" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="baseId" type="cmis:enumBaseObjectTypeIds" />

+      <xs:element minOccurs="0" maxOccurs="1" name="parentId" type="xs:string">

+        <xs:annotation>

+          <xs:documentation>
+						This is the id for the parent type definition. If
+						this is a base type,
+						this is not present.
+			</xs:documentation>

+        </xs:annotation>

+      </xs:element>

+      <xs:element minOccurs="1" maxOccurs="1" name="creatable" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="fileable" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="queryable" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="fulltextIndexed" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" default="true" name="includedInSupertypeQuery" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="controllablePolicy" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="controllableACL" type="xs:boolean" />

+      <xs:choice minOccurs="0" maxOccurs="unbounded">

+        <xs:annotation>

+          <xs:appinfo>

+            <jaxb:property name="propertyDefinition" />

+          </xs:appinfo>

+        </xs:annotation>

+        <xs:element name="propertyBooleanDefinition" type="cmis:cmisPropertyBooleanDefinitionType" />

+        <xs:element name="propertyDateTimeDefinition" type="cmis:cmisPropertyDateTimeDefinitionType" />

+        <xs:element name="propertyDecimalDefinition" type="cmis:cmisPropertyDecimalDefinitionType" />

+        <xs:element name="propertyIdDefinition" type="cmis:cmisPropertyIdDefinitionType" />

+        <xs:element name="propertyIntegerDefinition" type="cmis:cmisPropertyIntegerDefinitionType" />

+        <xs:element name="propertyHtmlDefinition" type="cmis:cmisPropertyHtmlDefinitionType" />

+        <xs:element name="propertyStringDefinition" type="cmis:cmisPropertyStringDefinitionType" />

+        <xs:element name="propertyUriDefinition" type="cmis:cmisPropertyUriDefinitionType" />

+      </xs:choice>

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisTypeDocumentDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisTypeDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="1" maxOccurs="1" name="versionable" type="xs:boolean" />

+          <xs:element minOccurs="1" maxOccurs="1" name="contentStreamAllowed" type="cmis:enumContentStreamAllowed" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisTypeFolderDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisTypeDefinitionType">

+        <xs:sequence />

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisTypeRelationshipDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisTypeDefinitionType">

+        <xs:sequence>

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="allowedSourceTypes" type="xs:string" />

+          <xs:element minOccurs="0" maxOccurs="unbounded" name="allowedTargetTypes" type="xs:string" />

+        </xs:sequence>

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisTypePolicyDefinitionType">

+    <xs:complexContent mixed="false">

+      <xs:extension base="cmis:cmisTypeDefinitionType">

+        <xs:sequence />

+      </xs:extension>

+    </xs:complexContent>

+  </xs:complexType>

+  <xs:complexType name="cmisQueryType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="statement" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="searchAllVersions" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" type="cmis:enumIncludeRelationships" />

+      <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="maxItems" type="xs:integer" />

+      <xs:element minOccurs="0" maxOccurs="1" name="skipCount" type="xs:integer" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisRepositoryInfoType">

+    <xs:sequence minOccurs="1">

+      <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="repositoryName" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="repositoryDescription" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="vendorName" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="productName" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="productVersion" type="xs:string" />

+      <xs:element name="rootFolderId" type="xs:string" />

+      <xs:element minOccurs="0" name="latestChangeLogToken" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilities" type="cmis:cmisRepositoryCapabilitiesType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="aclCapability" type="cmis:cmisACLCapabilityType" />

+      <xs:element minOccurs="1" maxOccurs="1" name="cmisVersionSupported" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="thinClientURI" type="xs:anyURI" />

+      <xs:element minOccurs="0" maxOccurs="1" name="changesIncomplete" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="changesOnType" type="cmis:enumBaseObjectTypeIds" />

+      <xs:element minOccurs="0" maxOccurs="1" name="principalAnonymous" type="xs:string">

+        <xs:annotation>

+          <xs:documentation>
+						If set, this field holds the principal who is
+						used for anonymous
+						access. This principal can then be passed to the
+						ACL services to
+						specify what permissions anonymous users should
+						have
+					</xs:documentation>

+        </xs:annotation>

+      </xs:element>

+      <xs:element minOccurs="0" maxOccurs="1" name="principalAnyone" type="xs:string">

+        <xs:annotation>

+          <xs:documentation>
+						If set, this field holds the principal who is
+						used for everyone's access. This principal can then be passed to
+						the
+						ACL services to
+						specify what permissions everyone should
+						have
+					</xs:documentation>

+        </xs:annotation>

+      </xs:element>

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisRepositoryCapabilitiesType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityACL" type="cmis:enumCapabilityACL" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityAllVersionsSearchable" type="xs:boolean" />

+      <xs:element name="capabilityChanges" type="cmis:enumCapabilityChanges" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityContentStreamUpdatability" type="cmis:enumCapabilityContentStreamUpdates" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityGetDescendants" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityGetFolderTree" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityMultifiling" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityPWCSearchable" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityPWCUpdatable" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityQuery" type="cmis:enumCapabilityQuery" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityRenditions" type="cmis:enumCapabilityRendition" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityUnfiling" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityVersionSpecificFiling" type="xs:boolean" />

+      <xs:element minOccurs="1" maxOccurs="1" name="capabilityJoin" type="cmis:enumCapabilityJoin" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:simpleType name="enumTypeOfChanges">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="created" />

+      <xs:enumeration value="updated" />

+      <xs:enumeration value="deleted" />

+      <xs:enumeration value="security" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumCapabilityChanges">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="none" />

+      <xs:enumeration value="objectidsonly" />

+      <xs:enumeration value="properties" />

+      <xs:enumeration value="all" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:complexType name="cmisChangeEventType">

+    <xs:sequence>

+      <xs:element name="changeType" type="cmis:enumTypeOfChanges" />

+      <xs:element name="changeTime" type="xs:dateTime" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:simpleType name="enumACLPropagation">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="repositorydetermined" />

+      <xs:enumeration value="objectonly" />

+      <xs:enumeration value="propagate" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumCapabilityACL">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="none" />

+      <xs:enumeration value="discover" />

+      <xs:enumeration value="manage" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumBasicPermissions">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:read" />

+      <xs:enumeration value="cmis:write" />

+      <xs:enumeration value="cmis:all" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:complexType name="cmisPermissionDefinition">

+    <xs:sequence>

+      <xs:element name="permission" type="xs:string" />

+      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:complexType name="cmisPermissionMapping">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="key" type="cmis:enumAllowableActionsKey" />

+      <xs:element minOccurs="1" maxOccurs="unbounded" name="permission" type="xs:string">

+        <xs:annotation>

+          <xs:documentation>
+						Multiple entries are OR'ed together. Any
+						permission that specified is
+						sufficient to provide rights required
+						in key
+					</xs:documentation>

+        </xs:annotation>

+      </xs:element>

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:simpleType name="enumAllowableActionsKey">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="canGetDescendents.Folder" />

+      <xs:enumeration value="canGetChildren.Folder" />

+      <xs:enumeration value="canGetParents.Folder" />

+      <xs:enumeration value="canGetFolderParent.Object" />

+      <xs:enumeration value="canCreateDocument.Folder" />

+      <xs:enumeration value="canCreateFolder.Folder" />

+      <xs:enumeration value="canCreateRelationship.Source" />

+      <xs:enumeration value="canCreateRelationship.Target" />

+      <xs:enumeration value="canGetProperties.Object" />

+      <xs:enumeration value="canViewContent.Object" />

+      <xs:enumeration value="canUpdateProperties.Object" />

+      <xs:enumeration value="canMove.Object" />

+      <xs:enumeration value="canMove.Target" />

+      <xs:enumeration value="canMove.Source" />

+      <xs:enumeration value="canDelete.Object" />

+      <xs:enumeration value="canDeleteTree.Folder" />

+      <xs:enumeration value="canSetContent.Document" />

+      <xs:enumeration value="canDeleteContent.Document" />

+      <xs:enumeration value="canAddToFolder.Object" />

+      <xs:enumeration value="canAddToFolder.Folder" />

+      <xs:enumeration value="canRemoveFromFolder.Object" />

+      <xs:enumeration value="canRemoveFromFolder.Folder" />

+      <xs:enumeration value="canCheckout.Document" />

+      <xs:enumeration value="canCancelCheckout.Document" />

+      <xs:enumeration value="canCheckin.Document" />

+      <xs:enumeration value="canGetAllVersions.VersionSeries" />

+      <xs:enumeration value="canGetObjectRelationships.Object" />

+      <xs:enumeration value="canAddPolicy.Object" />

+      <xs:enumeration value="canAddPolicy.Policy" />

+      <xs:enumeration value="canRemovePolicy.Object" />

+      <xs:enumeration value="canRemovePolicy.Policy" />

+      <xs:enumeration value="canGetAppliedPolicies.Object" />

+      <xs:enumeration value="canGetACL.Object" />

+      <xs:enumeration value="canApplyACL.Object" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumUsers">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:user">

+        <xs:annotation>

+          <xs:documentation>
+						This user can be used on setting ACLs to specify
+						the permission this
+						user context should have.
+			</xs:documentation>

+        </xs:annotation>

+      </xs:enumeration>

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:complexType name="cmisAccessControlPrincipalType">

+    <xs:sequence>

+      <xs:element name="principalId" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:complexType name="cmisAccessControlEntryType">

+    <xs:sequence>

+      <xs:element name="principal" type="cmis:cmisAccessControlPrincipalType" />

+      <xs:element minOccurs="1" maxOccurs="unbounded" name="permission" type="xs:string" />

+      <xs:element name="direct" type="xs:boolean" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:complexType name="cmisAccessControlListType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="unbounded" name="permission" type="cmis:cmisAccessControlEntryType" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:complexType name="cmisACLCapabilityType">

+    <xs:sequence>

+      <xs:element name="supportedPermissions" type="cmis:enumSupportedPermissions" />

+      <xs:element name="propagation" type="cmis:enumACLPropagation" />

+      <xs:element minOccurs="1" maxOccurs="unbounded" name="permissions" type="cmis:cmisPermissionDefinition" />

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="mapping" type="cmis:cmisPermissionMapping" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:simpleType name="enumSupportedPermissions">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="basic" />

+      <xs:enumeration value="repository" />

+      <xs:enumeration value="both" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumCapabilityRendition">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="none" />

+      <xs:enumeration value="read" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:simpleType name="enumRenditionKind">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="cmis:thumbnail" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:complexType name="cmisRenditionType">

+    <xs:sequence>

+      <xs:element name="streamId" type="xs:string" />

+      <xs:element name="mimetype" type="xs:string" />

+      <xs:element name="length" type="xs:integer" />

+      <xs:element name="kind" type="xs:string" />

+      <xs:element minOccurs="0" name="title" type="xs:string" />

+      <xs:element minOccurs="0" name="height" type="xs:integer" />

+      <xs:element minOccurs="0" name="width" type="xs:integer" />

+      <xs:element minOccurs="0" name="renditionDocumentId" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:element name="allowableActions" type="cmis:cmisAllowableActionsType">

+    <xs:annotation>

+      <xs:documentation>
+				This is the root tag for a CMIS AllowableActions
+				Document Type
+			</xs:documentation>

+    </xs:annotation>

+  </xs:element>

+  <xs:element name="query" type="cmis:cmisQueryType">

+    <xs:annotation>

+      <xs:documentation>
+				This is the root tag for a CMIS Query Document Type
+			</xs:documentation>

+    </xs:annotation>

+  </xs:element>

+  <xs:element name="acl" type="cmis:cmisAccessControlListType">

+    <xs:annotation>

+      <xs:documentation>
+				This is the root tag for a CMIS ACL Document Type
+			</xs:documentation>

+    </xs:annotation>

+  </xs:element>

+</xs:schema>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/CMIS-Messaging.xsd b/DotCMIS/Service References/CMISWebServicesReference/CMIS-Messaging.xsd
new file mode 100644
index 0000000..5d9b7cd
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/CMIS-Messaging.xsd
@@ -0,0 +1,1471 @@
+<?xml version="1.0" encoding="utf-8"?>

+<xs:schema xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/" version="1.0" jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">

+  <xs:import schemaLocation="CMIS-Core.xsd" namespace="http://docs.oasis-open.org/ns/cmis/core/200908/" />

+  <xs:complexType name="cmisFaultType">

+    <xs:sequence>

+      <xs:element name="type" type="cmism:enumServiceException" />

+      <xs:element name="code" type="xs:integer" />

+      <xs:element name="message" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:element name="cmisFault" type="cmism:cmisFaultType" />

+  <xs:simpleType name="enumServiceException">

+    <xs:restriction base="xs:string">

+      <xs:enumeration value="constraint" />

+      <xs:enumeration value="nameConstraintViolation" />

+      <xs:enumeration value="contentAlreadyExists" />

+      <xs:enumeration value="filterNotValid" />

+      <xs:enumeration value="invalidArgument" />

+      <xs:enumeration value="notSupported" />

+      <xs:enumeration value="objectNotFound" />

+      <xs:enumeration value="permissionDenied" />

+      <xs:enumeration value="runtime" />

+      <xs:enumeration value="storage" />

+      <xs:enumeration value="streamNotSupported" />

+      <xs:enumeration value="updateConflict" />

+      <xs:enumeration value="versioning" />

+    </xs:restriction>

+  </xs:simpleType>

+  <xs:complexType name="cmisExtensionType">

+    <xs:sequence>

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />

+    </xs:sequence>

+  </xs:complexType>

+  <xs:complexType name="cmisTypeContainer">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="type" type="cmis:cmisTypeDefinitionType" />

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="children" type="cmism:cmisTypeContainer" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisTypeDefinitionListType">

+    <xs:sequence>

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="types" type="cmis:cmisTypeDefinitionType" />

+      <xs:element minOccurs="1" maxOccurs="1" name="hasMoreItems" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="numItems" type="xs:integer" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisObjectInFolderContainerType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="objectInFolder" type="cmism:cmisObjectInFolderType" />

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="children" type="cmism:cmisObjectInFolderContainerType" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisObjectListType">

+    <xs:sequence>

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="objects" type="cmis:cmisObjectType" />

+      <xs:element minOccurs="1" maxOccurs="1" name="hasMoreItems" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="numItems" type="xs:integer" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisObjectInFolderType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="object" type="cmis:cmisObjectType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="pathSegment" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisObjectParentsType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="object" type="cmis:cmisObjectType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="relativePathSegment" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisObjectInFolderListType">

+    <xs:sequence>

+      <xs:element minOccurs="0" maxOccurs="unbounded" name="objects" type="cmism:cmisObjectInFolderType" />

+      <xs:element minOccurs="1" maxOccurs="1" name="hasMoreItems" type="xs:boolean" />

+      <xs:element minOccurs="0" maxOccurs="1" name="numItems" type="xs:integer" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisRepositoryEntryType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+      <xs:element minOccurs="1" maxOccurs="1" name="repositoryName" type="xs:string" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisContentStreamType">

+    <xs:sequence>

+      <xs:element minOccurs="0" name="length" type="xs:integer" />

+      <xs:element minOccurs="0" name="mimeType" type="xs:string" />

+      <xs:element minOccurs="0" name="filename" type="xs:string" />

+      <xs:element xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmime:expectedContentTypes="application/octet-stream" name="stream" type="xs:base64Binary" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:complexType name="cmisACLType">

+    <xs:sequence>

+      <xs:element minOccurs="1" maxOccurs="1" name="ACL" type="cmis:cmisAccessControlListType" />

+      <xs:element minOccurs="0" maxOccurs="1" name="exact" type="xs:boolean" />

+      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+    </xs:sequence>

+    <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+  </xs:complexType>

+  <xs:element name="getRepositories">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getRepositoriesResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="repositories" nillable="true" type="cmism:cmisRepositoryEntryType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getRepositoryInfo">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getRepositoryInfoResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryInfo" type="cmis:cmisRepositoryInfoType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getTypeChildren">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="typeId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePropertyDefinitions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="maxItems" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="skipCount" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getTypeChildrenResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="types" type="cmism:cmisTypeDefinitionListType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getTypeDescendants">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="typeId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="depth" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePropertyDefinitions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getTypeDescendantsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="types" type="cmism:cmisTypeContainer" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getTypeDefinition">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="typeId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getTypeDefinitionResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="type" type="cmis:cmisTypeDefinitionType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getDescendants">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="folderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="depth" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePathSegment" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getDescendantsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="objects" type="cmism:cmisObjectInFolderContainerType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getFolderTree">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="folderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="depth" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePathSegment" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getFolderTreeResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="objects" type="cmism:cmisObjectInFolderContainerType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getChildren">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="folderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="orderBy" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePathSegment" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="maxItems" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="skipCount" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getChildrenResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objects" type="cmism:cmisObjectInFolderListType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getFolderParent">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="folderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getFolderParentResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="object" type="cmis:cmisObjectType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectParents">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelativePathSegment" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectParentsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="parents" type="cmism:cmisObjectParentsType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getRenditions">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="maxItems" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="skipCount" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getRenditionsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="renditions" type="cmis:cmisRenditionType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getCheckedOutDocs">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="folderId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="orderBy" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="maxItems" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="skipCount" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getCheckedOutDocsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objects" type="cmism:cmisObjectListType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createDocument">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="folderId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="contentStream" nillable="true" type="cmism:cmisContentStreamType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="versioningState" nillable="true" type="cmis:enumVersioningState" />

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="policies" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="addACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="removeACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createDocumentResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createDocumentFromSource">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="sourceId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="folderId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="versioningState" nillable="true" type="cmis:enumVersioningState" />

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="policies" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="addACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="removeACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createDocumentFromSourceResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createFolder">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+        <xs:element minOccurs="1" maxOccurs="1" name="folderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="policies" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="addACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="removeACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createFolderResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createRelationship">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="policies" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="addACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="removeACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createRelationshipResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createPolicy">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="folderId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="policies" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="addACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="removeACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="createPolicyResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getAllowableActions">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getAllowableActionsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="allowableActions" type="cmis:cmisAllowableActionsType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getProperties">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getPropertiesResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObject">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePolicyIds" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeACL" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="object" type="cmis:cmisObjectType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectByPath">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="path" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePolicyIds" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeACL" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectByPathResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="object" type="cmis:cmisObjectType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getContentStream">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="streamId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="offset" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="length" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getContentStreamResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="contentStream" type="cmism:cmisContentStreamType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="updateProperties">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="changeToken" nillable="true" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="updatePropertiesResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="changeToken" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="moveObject">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="targetFolderId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="sourceFolderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="moveObjectResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="deleteObject">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="allVersions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="deleteObjectResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="deleteTree">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="folderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="allVersions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="unfileObjects" nillable="true" type="cmis:enumUnfileObject" />

+        <xs:element minOccurs="0" maxOccurs="1" name="continueOnFailure" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="deleteTreeResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element name="failedToDelete">

+          <xs:complexType>

+            <xs:sequence>

+              <xs:element minOccurs="0" maxOccurs="unbounded" name="objectIds" type="xs:string" />

+              <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" />

+            </xs:sequence>

+          </xs:complexType>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="setContentStream">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="overwriteFlag" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="changeToken" nillable="true" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="contentStream" type="cmism:cmisContentStreamType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="setContentStreamResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="changeToken" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="deleteContentStream">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="changeToken" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="deleteContentStreamResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="changeToken" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="addObjectToFolder">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="folderId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="allVersions" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="addObjectToFolderResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="removeObjectFromFolder">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="folderId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="removeObjectFromFolderResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="query">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="statement" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="searchAllVersions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="maxItems" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="skipCount" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+      <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="queryResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objects" type="cmism:cmisObjectListType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getContentChanges">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="changeLogToken" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeProperties" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePolicyIds" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeACL" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="maxItems" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getContentChangesResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objects" type="cmism:cmisObjectListType" />

+        <xs:element minOccurs="1" maxOccurs="1" name="changeLogToken" type="xs:string" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="checkOut">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="checkOutResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="contentCopied" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="cancelCheckOut">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="cancelCheckOutResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="checkIn">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="major" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="properties" nillable="true" type="cmis:cmisPropertiesType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="contentStream" nillable="true" type="cmism:cmisContentStreamType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="checkinComment" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="policies" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="addACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="removeACEs" nillable="true" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="checkInResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getPropertiesOfLatestVersion">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="major" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getPropertiesOfLatestVersionResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="properties" type="cmis:cmisPropertiesType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectOfLatestVersion">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="major" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeRelationships" nillable="true" type="cmis:enumIncludeRelationships" />

+        <xs:element minOccurs="0" maxOccurs="1" name="renditionFilter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includePolicyIds" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeACL" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectOfLatestVersionResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="object" type="cmis:cmisObjectType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getAllVersions">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getAllVersionsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="objects" type="cmis:cmisObjectType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectRelationships">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeSubRelationshipTypes" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="relationshipDirection" nillable="true" type="cmis:enumRelationshipDirection" />

+        <xs:element minOccurs="0" maxOccurs="1" name="typeId" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="includeAllowableActions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="maxItems" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="skipCount" nillable="true" type="xs:integer" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getObjectRelationshipsResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="objects" type="cmism:cmisObjectListType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="applyPolicy">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="policyId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="applyPolicyResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="removePolicy">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="policyId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="removePolicyResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getAppliedPolicies">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="filter" nillable="true" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getAppliedPoliciesResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="0" maxOccurs="unbounded" name="objects" type="cmis:cmisObjectType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getACL">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="onlyBasicPermissions" nillable="true" type="xs:boolean" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="getACLResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="ACL" type="cmism:cmisACLType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="applyACL">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="repositoryId" type="xs:string" />

+        <xs:element minOccurs="1" maxOccurs="1" name="objectId" type="xs:string" />

+        <xs:element minOccurs="0" maxOccurs="1" name="addACEs" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="removeACEs" type="cmis:cmisAccessControlListType" />

+        <xs:element minOccurs="0" maxOccurs="1" name="ACLPropagation" nillable="true" type="cmis:enumACLPropagation" />

+        <xs:element minOccurs="0" maxOccurs="1" name="extension" nillable="true" type="cmism:cmisExtensionType">

+          <xs:annotation>

+            <xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>

+          </xs:annotation>

+        </xs:element>

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+  <xs:element name="applyACLResponse">

+    <xs:complexType>

+      <xs:sequence>

+        <xs:element minOccurs="1" maxOccurs="1" name="ACL" type="cmism:cmisACLType" />

+      </xs:sequence>

+    </xs:complexType>

+  </xs:element>

+</xs:schema>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/CMISWebServices.wsdl b/DotCMIS/Service References/CMISWebServicesReference/CMISWebServices.wsdl
new file mode 100644
index 0000000..1060067
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/CMISWebServices.wsdl
@@ -0,0 +1,1114 @@
+<?xml version="1.0" encoding="utf-8"?>

+<definitions xmlns:cmisw="http://docs.oasis-open.org/ns/cmis/ws/200908/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" name="CMISWebServices" targetNamespace="http://docs.oasis-open.org/ns/cmis/ws/200908/" xmlns="http://schemas.xmlsoap.org/wsdl/">

+  <types>

+    <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/ns/cmis/ws/200908/">

+      <xsd:import schemaLocation="CMIS-Core.xsd" namespace="http://docs.oasis-open.org/ns/cmis/core/200908/" />

+      <xsd:import schemaLocation="CMIS-Messaging.xsd" namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/" />

+    </xsd:schema>

+  </types>

+  <message name="cmisException">

+    <part name="fault" element="cmism:cmisFault" />

+  </message>

+  <message name="getACLRequest">

+    <part name="parameters" element="cmism:getACL" />

+  </message>

+  <message name="getACLResponse">

+    <part name="parameters" element="cmism:getACLResponse" />

+  </message>

+  <message name="applyACLRequest">

+    <part name="parameters" element="cmism:applyACL" />

+  </message>

+  <message name="applyACLResponse">

+    <part name="parameters" element="cmism:applyACLResponse" />

+  </message>

+  <message name="queryRequest">

+    <part name="parameters" element="cmism:query" />

+  </message>

+  <message name="queryResponse">

+    <part name="parameters" element="cmism:queryResponse" />

+  </message>

+  <message name="getContentChangesRequest">

+    <part name="parameters" element="cmism:getContentChanges" />

+  </message>

+  <message name="getContentChangesResponse">

+    <part name="parameters" element="cmism:getContentChangesResponse" />

+  </message>

+  <message name="addObjectToFolderRequest">

+    <part name="parameters" element="cmism:addObjectToFolder" />

+  </message>

+  <message name="addObjectToFolderResponse">

+    <part name="parameters" element="cmism:addObjectToFolderResponse" />

+  </message>

+  <message name="removeObjectFromFolderRequest">

+    <part name="parameters" element="cmism:removeObjectFromFolder" />

+  </message>

+  <message name="removeObjectFromFolderResponse">

+    <part name="parameters" element="cmism:removeObjectFromFolderResponse" />

+  </message>

+  <message name="getDescendantsRequest">

+    <part name="parameters" element="cmism:getDescendants" />

+  </message>

+  <message name="getDescendantsResponse">

+    <part name="parameters" element="cmism:getDescendantsResponse" />

+  </message>

+  <message name="getChildrenRequest">

+    <part name="parameters" element="cmism:getChildren" />

+  </message>

+  <message name="getChildrenResponse">

+    <part name="parameters" element="cmism:getChildrenResponse" />

+  </message>

+  <message name="getFolderParentRequest">

+    <part name="parameters" element="cmism:getFolderParent" />

+  </message>

+  <message name="getFolderParentResponse">

+    <part name="parameters" element="cmism:getFolderParentResponse" />

+  </message>

+  <message name="getObjectParentsRequest">

+    <part name="parameters" element="cmism:getObjectParents" />

+  </message>

+  <message name="getObjectParentsResponse">

+    <part name="parameters" element="cmism:getObjectParentsResponse" />

+  </message>

+  <message name="getRenditionsRequest">

+    <part name="parameters" element="cmism:getRenditions" />

+  </message>

+  <message name="getRenditionsResponse">

+    <part name="parameters" element="cmism:getRenditionsResponse" />

+  </message>

+  <message name="getCheckedOutDocsRequest">

+    <part name="parameters" element="cmism:getCheckedOutDocs" />

+  </message>

+  <message name="getCheckedOutDocsResponse">

+    <part name="parameters" element="cmism:getCheckedOutDocsResponse" />

+  </message>

+  <message name="createDocumentRequest">

+    <part name="parameters" element="cmism:createDocument" />

+  </message>

+  <message name="createDocumentResponse">

+    <part name="parameters" element="cmism:createDocumentResponse" />

+  </message>

+  <message name="createDocumentFromSourceRequest">

+    <part name="parameters" element="cmism:createDocumentFromSource" />

+  </message>

+  <message name="createDocumentFromSourceResponse">

+    <part name="parameters" element="cmism:createDocumentFromSourceResponse" />

+  </message>

+  <message name="createFolderRequest">

+    <part name="parameters" element="cmism:createFolder" />

+  </message>

+  <message name="createFolderResponse">

+    <part name="parameters" element="cmism:createFolderResponse" />

+  </message>

+  <message name="createRelationshipRequest">

+    <part name="parameters" element="cmism:createRelationship" />

+  </message>

+  <message name="createRelationshipResponse">

+    <part name="parameters" element="cmism:createRelationshipResponse" />

+  </message>

+  <message name="createPolicyRequest">

+    <part name="parameters" element="cmism:createPolicy" />

+  </message>

+  <message name="createPolicyResponse">

+    <part name="parameters" element="cmism:createPolicyResponse" />

+  </message>

+  <message name="getAllowableActionsRequest">

+    <part name="parameters" element="cmism:getAllowableActions" />

+  </message>

+  <message name="getAllowableActionsResponse">

+    <part name="parameters" element="cmism:getAllowableActionsResponse" />

+  </message>

+  <message name="getObjectRequest">

+    <part name="parameters" element="cmism:getObject" />

+  </message>

+  <message name="getObjectResponse">

+    <part name="parameters" element="cmism:getObjectResponse" />

+  </message>

+  <message name="getPropertiesRequest">

+    <part name="parameters" element="cmism:getProperties" />

+  </message>

+  <message name="getPropertiesResponse">

+    <part name="parameters" element="cmism:getPropertiesResponse" />

+  </message>

+  <message name="getObjectByPathRequest">

+    <part name="parameters" element="cmism:getObjectByPath" />

+  </message>

+  <message name="getObjectByPathResponse">

+    <part name="parameters" element="cmism:getObjectByPathResponse" />

+  </message>

+  <message name="getContentStreamRequest">

+    <part name="parameters" element="cmism:getContentStream" />

+  </message>

+  <message name="getContentStreamResponse">

+    <part name="parameters" element="cmism:getContentStreamResponse" />

+  </message>

+  <message name="updatePropertiesRequest">

+    <part name="parameters" element="cmism:updateProperties" />

+  </message>

+  <message name="updatePropertiesResponse">

+    <part name="parameters" element="cmism:updatePropertiesResponse" />

+  </message>

+  <message name="moveObjectRequest">

+    <part name="parameters" element="cmism:moveObject" />

+  </message>

+  <message name="moveObjectResponse">

+    <part name="parameters" element="cmism:moveObjectResponse" />

+  </message>

+  <message name="deleteObjectRequest">

+    <part name="parameters" element="cmism:deleteObject" />

+  </message>

+  <message name="deleteObjectResponse">

+    <part name="parameters" element="cmism:deleteObjectResponse" />

+  </message>

+  <message name="deleteTreeRequest">

+    <part name="parameters" element="cmism:deleteTree" />

+  </message>

+  <message name="deleteTreeResponse">

+    <part name="parameters" element="cmism:deleteTreeResponse" />

+  </message>

+  <message name="setContentStreamRequest">

+    <part name="parameters" element="cmism:setContentStream" />

+  </message>

+  <message name="setContentStreamResponse">

+    <part name="parameters" element="cmism:setContentStreamResponse" />

+  </message>

+  <message name="deleteContentStreamRequest">

+    <part name="parameters" element="cmism:deleteContentStream" />

+  </message>

+  <message name="deleteContentStreamResponse">

+    <part name="parameters" element="cmism:deleteContentStreamResponse" />

+  </message>

+  <message name="applyPolicyRequest">

+    <part name="parameters" element="cmism:applyPolicy" />

+  </message>

+  <message name="applyPolicyResponse">

+    <part name="parameters" element="cmism:applyPolicyResponse" />

+  </message>

+  <message name="removePolicyRequest">

+    <part name="parameters" element="cmism:removePolicy" />

+  </message>

+  <message name="removePolicyResponse">

+    <part name="parameters" element="cmism:removePolicyResponse" />

+  </message>

+  <message name="getAppliedPoliciesRequest">

+    <part name="parameters" element="cmism:getAppliedPolicies" />

+  </message>

+  <message name="getAppliedPoliciesResponse">

+    <part name="parameters" element="cmism:getAppliedPoliciesResponse" />

+  </message>

+  <message name="getObjectRelationshipsRequest">

+    <part name="parameters" element="cmism:getObjectRelationships" />

+  </message>

+  <message name="getObjectRelationshipsResponse">

+    <part name="parameters" element="cmism:getObjectRelationshipsResponse" />

+  </message>

+  <message name="getRepositoriesRequest">

+    <part name="parameters" element="cmism:getRepositories" />

+  </message>

+  <message name="getRepositoriesResponse">

+    <part name="parameters" element="cmism:getRepositoriesResponse" />

+  </message>

+  <message name="getRepositoryInfoRequest">

+    <part name="parameters" element="cmism:getRepositoryInfo" />

+  </message>

+  <message name="getRepositoryInfoResponse">

+    <part name="parameters" element="cmism:getRepositoryInfoResponse" />

+  </message>

+  <message name="getTypeChildrenRequest">

+    <part name="parameters" element="cmism:getTypeChildren" />

+  </message>

+  <message name="getTypeChildrenResponse">

+    <part name="parameters" element="cmism:getTypeChildrenResponse" />

+  </message>

+  <message name="getTypeDescendantsRequest">

+    <part name="parameters" element="cmism:getTypeDescendants" />

+  </message>

+  <message name="getTypeDescendantsResponse">

+    <part name="parameters" element="cmism:getTypeDescendantsResponse" />

+  </message>

+  <message name="getTypeDefinitionRequest">

+    <part name="parameters" element="cmism:getTypeDefinition" />

+  </message>

+  <message name="getTypeDefinitionResponse">

+    <part name="parameters" element="cmism:getTypeDefinitionResponse" />

+  </message>

+  <message name="checkOutRequest">

+    <part name="parameters" element="cmism:checkOut" />

+  </message>

+  <message name="checkOutResponse">

+    <part name="parameters" element="cmism:checkOutResponse" />

+  </message>

+  <message name="cancelCheckOutRequest">

+    <part name="parameters" element="cmism:cancelCheckOut" />

+  </message>

+  <message name="cancelCheckOutResponse">

+    <part name="parameters" element="cmism:cancelCheckOutResponse" />

+  </message>

+  <message name="checkInRequest">

+    <part name="parameters" element="cmism:checkIn" />

+  </message>

+  <message name="checkInResponse">

+    <part name="parameters" element="cmism:checkInResponse" />

+  </message>

+  <message name="getObjectOfLatestVersionRequest">

+    <part name="parameters" element="cmism:getObjectOfLatestVersion" />

+  </message>

+  <message name="getObjectOfLatestVersionResponse">

+    <part name="parameters" element="cmism:getObjectOfLatestVersionResponse" />

+  </message>

+  <message name="getPropertiesOfLatestVersionRequest">

+    <part name="parameters" element="cmism:getPropertiesOfLatestVersion" />

+  </message>

+  <message name="getPropertiesOfLatestVersionResponse">

+    <part name="parameters" element="cmism:getPropertiesOfLatestVersionResponse" />

+  </message>

+  <message name="getAllVersionsRequest">

+    <part name="parameters" element="cmism:getAllVersions" />

+  </message>

+  <message name="getAllVersionsResponse">

+    <part name="parameters" element="cmism:getAllVersionsResponse" />

+  </message>

+  <message name="getFolderTreeRequest">

+    <part name="parameters" element="cmism:getFolderTree" />

+  </message>

+  <message name="getFolderTreeResponse">

+    <part name="parameters" element="cmism:getFolderTreeResponse" />

+  </message>

+  <portType name="DiscoveryServicePort">

+    <operation name="query">

+      <input message="cmisw:queryRequest" />

+      <output message="cmisw:queryResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getContentChanges">

+      <input message="cmisw:getContentChangesRequest" />

+      <output message="cmisw:getContentChangesResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="MultiFilingServicePort">

+    <operation name="addObjectToFolder">

+      <input message="cmisw:addObjectToFolderRequest" />

+      <output message="cmisw:addObjectToFolderResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="removeObjectFromFolder">

+      <input message="cmisw:removeObjectFromFolderRequest" />

+      <output message="cmisw:removeObjectFromFolderResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="NavigationServicePort">

+    <operation name="getDescendants">

+      <input message="cmisw:getDescendantsRequest" />

+      <output message="cmisw:getDescendantsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getChildren">

+      <input message="cmisw:getChildrenRequest" />

+      <output message="cmisw:getChildrenResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getFolderParent">

+      <input message="cmisw:getFolderParentRequest" />

+      <output message="cmisw:getFolderParentResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getFolderTree">

+      <input message="cmisw:getFolderTreeRequest" />

+      <output message="cmisw:getFolderTreeResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getObjectParents">

+      <input message="cmisw:getObjectParentsRequest" />

+      <output message="cmisw:getObjectParentsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getCheckedOutDocs">

+      <input message="cmisw:getCheckedOutDocsRequest" />

+      <output message="cmisw:getCheckedOutDocsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="ObjectServicePort">

+    <operation name="createDocument">

+      <input message="cmisw:createDocumentRequest" />

+      <output message="cmisw:createDocumentResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="createDocumentFromSource">

+      <input message="cmisw:createDocumentFromSourceRequest" />

+      <output message="cmisw:createDocumentFromSourceResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="createFolder">

+      <input message="cmisw:createFolderRequest" />

+      <output message="cmisw:createFolderResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="createRelationship">

+      <input message="cmisw:createRelationshipRequest" />

+      <output message="cmisw:createRelationshipResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="createPolicy">

+      <input message="cmisw:createPolicyRequest" />

+      <output message="cmisw:createPolicyResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getAllowableActions">

+      <input message="cmisw:getAllowableActionsRequest" />

+      <output message="cmisw:getAllowableActionsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getObject">

+      <input message="cmisw:getObjectRequest" />

+      <output message="cmisw:getObjectResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getProperties">

+      <input message="cmisw:getPropertiesRequest" />

+      <output message="cmisw:getPropertiesResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getRenditions">

+      <input message="cmisw:getRenditionsRequest" />

+      <output message="cmisw:getRenditionsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getObjectByPath">

+      <input message="cmisw:getObjectByPathRequest" />

+      <output message="cmisw:getObjectByPathResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getContentStream">

+      <input message="cmisw:getContentStreamRequest" />

+      <output message="cmisw:getContentStreamResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="updateProperties">

+      <input message="cmisw:updatePropertiesRequest" />

+      <output message="cmisw:updatePropertiesResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="moveObject">

+      <input message="cmisw:moveObjectRequest" />

+      <output message="cmisw:moveObjectResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="deleteObject">

+      <input message="cmisw:deleteObjectRequest" />

+      <output message="cmisw:deleteObjectResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="deleteTree">

+      <input message="cmisw:deleteTreeRequest" />

+      <output message="cmisw:deleteTreeResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="setContentStream">

+      <input message="cmisw:setContentStreamRequest" />

+      <output message="cmisw:setContentStreamResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="deleteContentStream">

+      <input message="cmisw:deleteContentStreamRequest" />

+      <output message="cmisw:deleteContentStreamResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="PolicyServicePort">

+    <operation name="applyPolicy">

+      <input message="cmisw:applyPolicyRequest" />

+      <output message="cmisw:applyPolicyResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="removePolicy">

+      <input message="cmisw:removePolicyRequest" />

+      <output message="cmisw:removePolicyResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getAppliedPolicies">

+      <input message="cmisw:getAppliedPoliciesRequest" />

+      <output message="cmisw:getAppliedPoliciesResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="RelationshipServicePort">

+    <operation name="getObjectRelationships">

+      <input message="cmisw:getObjectRelationshipsRequest" />

+      <output message="cmisw:getObjectRelationshipsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="RepositoryServicePort">

+    <operation name="getRepositories">

+      <input message="cmisw:getRepositoriesRequest" />

+      <output message="cmisw:getRepositoriesResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getRepositoryInfo">

+      <input message="cmisw:getRepositoryInfoRequest" />

+      <output message="cmisw:getRepositoryInfoResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getTypeChildren">

+      <input message="cmisw:getTypeChildrenRequest" />

+      <output message="cmisw:getTypeChildrenResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getTypeDescendants">

+      <input message="cmisw:getTypeDescendantsRequest" />

+      <output message="cmisw:getTypeDescendantsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getTypeDefinition">

+      <input message="cmisw:getTypeDefinitionRequest" />

+      <output message="cmisw:getTypeDefinitionResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="VersioningServicePort">

+    <operation name="checkOut">

+      <input message="cmisw:checkOutRequest" />

+      <output message="cmisw:checkOutResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="cancelCheckOut">

+      <input message="cmisw:cancelCheckOutRequest" />

+      <output message="cmisw:cancelCheckOutResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="checkIn">

+      <input message="cmisw:checkInRequest" />

+      <output message="cmisw:checkInResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getObjectOfLatestVersion">

+      <input message="cmisw:getObjectOfLatestVersionRequest" />

+      <output message="cmisw:getObjectOfLatestVersionResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getPropertiesOfLatestVersion">

+      <input message="cmisw:getPropertiesOfLatestVersionRequest" />

+      <output message="cmisw:getPropertiesOfLatestVersionResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="getAllVersions">

+      <input message="cmisw:getAllVersionsRequest" />

+      <output message="cmisw:getAllVersionsResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <portType name="ACLServicePort">

+    <operation name="getACL">

+      <input message="cmisw:getACLRequest" />

+      <output message="cmisw:getACLResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+    <operation name="applyACL">

+      <input message="cmisw:applyACLRequest" />

+      <output message="cmisw:applyACLResponse" />

+      <fault name="cmisException" message="cmisw:cmisException" />

+    </operation>

+  </portType>

+  <binding name="DiscoveryServicePortBinding" type="cmisw:DiscoveryServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="query">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getContentChanges">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="MultiFilingServicePortBinding" type="cmisw:MultiFilingServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="addObjectToFolder">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="removeObjectFromFolder">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="NavigationServicePortBinding" type="cmisw:NavigationServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="getDescendants">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getChildren">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getFolderParent">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getFolderTree">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getObjectParents">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getCheckedOutDocs">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="ObjectServicePortBinding" type="cmisw:ObjectServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="createDocument">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="createDocumentFromSource">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="createFolder">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="createRelationship">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="createPolicy">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getAllowableActions">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getObject">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getProperties">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getRenditions">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getObjectByPath">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getContentStream">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="updateProperties">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="moveObject">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="deleteObject">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="deleteTree">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="setContentStream">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="deleteContentStream">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="PolicyServicePortBinding" type="cmisw:PolicyServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="applyPolicy">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="removePolicy">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getAppliedPolicies">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="RelationshipServicePortBinding" type="cmisw:RelationshipServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="getObjectRelationships">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="RepositoryServicePortBinding" type="cmisw:RepositoryServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="getRepositories">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getRepositoryInfo">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getTypeChildren">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getTypeDescendants">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getTypeDefinition">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="VersioningServicePortBinding" type="cmisw:VersioningServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="checkOut">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="cancelCheckOut">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="checkIn">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getObjectOfLatestVersion">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getPropertiesOfLatestVersion">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="getAllVersions">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <binding name="ACLServicePortBinding" type="cmisw:ACLServicePort">

+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

+    <operation name="getACL">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+    <operation name="applyACL">

+      <soap:operation soapAction="" />

+      <input>

+        <soap:body use="literal" />

+      </input>

+      <output>

+        <soap:body use="literal" />

+      </output>

+      <fault name="cmisException">

+        <soap:fault use="literal" name="cmisException" namespace="" />

+      </fault>

+    </operation>

+  </binding>

+  <service name="DiscoveryService">

+    <port name="DiscoveryServicePort" binding="cmisw:DiscoveryServicePortBinding">

+      <soap:address location="http://cmis/services/DiscoveryService.DiscoveryServicePort" />

+    </port>

+  </service>

+  <service name="MultiFilingService">

+    <port name="MultiFilingServicePort" binding="cmisw:MultiFilingServicePortBinding">

+      <soap:address location="http://cmis/services/MultiFilingService.MultiFilingServicePort" />

+    </port>

+  </service>

+  <service name="NavigationService">

+    <port name="NavigationServicePort" binding="cmisw:NavigationServicePortBinding">

+      <soap:address location="http://cmis/services/NavigationService.NavigationServicePort" />

+    </port>

+  </service>

+  <service name="ObjectService">

+    <port name="ObjectServicePort" binding="cmisw:ObjectServicePortBinding">

+      <soap:address location="http://cmis/services/ObjectService.ObjectServicePort" />

+    </port>

+  </service>

+  <service name="PolicyService">

+    <port name="PolicyServicePort" binding="cmisw:PolicyServicePortBinding">

+      <soap:address location="http://cmis/services/PolicyService.PolicyServicePort" />

+    </port>

+  </service>

+  <service name="RelationshipService">

+    <port name="RelationshipServicePort" binding="cmisw:RelationshipServicePortBinding">

+      <soap:address location="http://cmis/services/RelationshipService.RelationshipServicePort" />

+    </port>

+  </service>

+  <service name="RepositoryService">

+    <port name="RepositoryServicePort" binding="cmisw:RepositoryServicePortBinding">

+      <soap:address location="http://cmis/services/RepositoryService.RepositoryServicePort" />

+    </port>

+  </service>

+  <service name="VersioningService">

+    <port name="VersioningServicePort" binding="cmisw:VersioningServicePortBinding">

+      <soap:address location="http://cmis/services/VersioningService.VersioningServicePort" />

+    </port>

+  </service>

+  <service name="ACLService">

+    <port name="ACLServicePort" binding="cmisw:ACLServicePortBinding">

+      <soap:address location="http://cmis/services/ACLService.ACLServicePort" />

+    </port>

+  </service>

+</definitions>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisACLType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisACLType.datasource
new file mode 100644
index 0000000..db1abfb
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisACLType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisACLType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisACLType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisAllowableActionsType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisAllowableActionsType.datasource
new file mode 100644
index 0000000..443ead7
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisAllowableActionsType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisAllowableActionsType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisAllowableActionsType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisContentStreamType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisContentStreamType.datasource
new file mode 100644
index 0000000..e5fa164
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisContentStreamType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisContentStreamType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisContentStreamType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisExtensionType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisExtensionType.datasource
new file mode 100644
index 0000000..c2e0ce6
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisExtensionType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisExtensionType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisExtensionType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectInFolderContainerType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectInFolderContainerType.datasource
new file mode 100644
index 0000000..f7bb4c9
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectInFolderContainerType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisObjectInFolderContainerType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisObjectInFolderContainerType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType.datasource
new file mode 100644
index 0000000..6ff9534
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisObjectInFolderListType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectListType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectListType.datasource
new file mode 100644
index 0000000..b3d41f8
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectListType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisObjectListType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisObjectListType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectParentsType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectParentsType.datasource
new file mode 100644
index 0000000..b74e650
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectParentsType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisObjectParentsType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisObjectParentsType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectType.datasource
new file mode 100644
index 0000000..5f84a0d
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisObjectType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisObjectType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisObjectType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisPropertiesType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisPropertiesType.datasource
new file mode 100644
index 0000000..f961985
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisPropertiesType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisPropertiesType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisPropertiesType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRenditionType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRenditionType.datasource
new file mode 100644
index 0000000..f5fc306
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRenditionType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisRenditionType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisRenditionType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRepositoryEntryType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRepositoryEntryType.datasource
new file mode 100644
index 0000000..225d3a5
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRepositoryEntryType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisRepositoryEntryType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisRepositoryEntryType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType.datasource
new file mode 100644
index 0000000..214195e
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisRepositoryInfoType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeContainer.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeContainer.datasource
new file mode 100644
index 0000000..483ed2d
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeContainer.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisTypeContainer" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisTypeContainer, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType.datasource
new file mode 100644
index 0000000..c44614e
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisTypeDefinitionListType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType.datasource
new file mode 100644
index 0000000..fe40f4d
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="cmisTypeDefinitionType" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete.datasource b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete.datasource
new file mode 100644
index 0000000..4392e06
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    This file is automatically generated by Visual Studio .Net. It is 

+    used to store generic object data source configuration information.  

+    Renaming the file extension or editing the content of this file may   

+    cause the file to be unrecognizable by the program.

+-->

+<GenericObjectDataSource DisplayName="deleteTreeResponseFailedToDelete" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

+   <TypeInfo>DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete, Service References.CMISWebServicesReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>

+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/Reference.cs b/DotCMIS/Service References/CMISWebServicesReference/Reference.cs
new file mode 100644
index 0000000..355de0d
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/Reference.cs
@@ -0,0 +1,9652 @@
+//------------------------------------------------------------------------------

+// <auto-generated>

+//     This code was generated by a tool.

+//     Runtime Version:4.0.30319.1

+//

+//     Changes to this file may cause incorrect behavior and will be lost if

+//     the code is regenerated.

+// </auto-generated>

+//------------------------------------------------------------------------------

+

+namespace DotCMIS.CMISWebServicesReference {

+    

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisFaultType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private enumServiceException typeField;

+        

+        private string codeField;

+        

+        private string messageField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public enumServiceException type {

+            get {

+                return this.typeField;

+            }

+            set {

+                this.typeField = value;

+                this.RaisePropertyChanged("type");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=1)]

+        public string code {

+            get {

+                return this.codeField;

+            }

+            set {

+                this.codeField = value;

+                this.RaisePropertyChanged("code");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=2)]

+        public string message {

+            get {

+                return this.messageField;

+            }

+            set {

+                this.messageField = value;

+                this.RaisePropertyChanged("message");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=3)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public enum enumServiceException {

+        

+        /// <remarks/>

+        constraint,

+        

+        /// <remarks/>

+        nameConstraintViolation,

+        

+        /// <remarks/>

+        contentAlreadyExists,

+        

+        /// <remarks/>

+        filterNotValid,

+        

+        /// <remarks/>

+        invalidArgument,

+        

+        /// <remarks/>

+        notSupported,

+        

+        /// <remarks/>

+        objectNotFound,

+        

+        /// <remarks/>

+        permissionDenied,

+        

+        /// <remarks/>

+        runtime,

+        

+        /// <remarks/>

+        storage,

+        

+        /// <remarks/>

+        streamNotSupported,

+        

+        /// <remarks/>

+        updateConflict,

+        

+        /// <remarks/>

+        versioning,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisRenditionType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string streamIdField;

+        

+        private string mimetypeField;

+        

+        private string lengthField;

+        

+        private string kindField;

+        

+        private string titleField;

+        

+        private string heightField;

+        

+        private string widthField;

+        

+        private string renditionDocumentIdField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public string streamId {

+            get {

+                return this.streamIdField;

+            }

+            set {

+                this.streamIdField = value;

+                this.RaisePropertyChanged("streamId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string mimetype {

+            get {

+                return this.mimetypeField;

+            }

+            set {

+                this.mimetypeField = value;

+                this.RaisePropertyChanged("mimetype");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=2)]

+        public string length {

+            get {

+                return this.lengthField;

+            }

+            set {

+                this.lengthField = value;

+                this.RaisePropertyChanged("length");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public string kind {

+            get {

+                return this.kindField;

+            }

+            set {

+                this.kindField = value;

+                this.RaisePropertyChanged("kind");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=4)]

+        public string title {

+            get {

+                return this.titleField;

+            }

+            set {

+                this.titleField = value;

+                this.RaisePropertyChanged("title");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=5)]

+        public string height {

+            get {

+                return this.heightField;

+            }

+            set {

+                this.heightField = value;

+                this.RaisePropertyChanged("height");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=6)]

+        public string width {

+            get {

+                return this.widthField;

+            }

+            set {

+                this.widthField = value;

+                this.RaisePropertyChanged("width");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=7)]

+        public string renditionDocumentId {

+            get {

+                return this.renditionDocumentIdField;

+            }

+            set {

+                this.renditionDocumentIdField = value;

+                this.RaisePropertyChanged("renditionDocumentId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=8)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisListOfIdsType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string[] idField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("id", Order=0)]

+        public string[] id {

+            get {

+                return this.idField;

+            }

+            set {

+                this.idField = value;

+                this.RaisePropertyChanged("id");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisAccessControlPrincipalType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string principalIdField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public string principalId {

+            get {

+                return this.principalIdField;

+            }

+            set {

+                this.principalIdField = value;

+                this.RaisePropertyChanged("principalId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisAccessControlEntryType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisAccessControlPrincipalType principalField;

+        

+        private string[] permissionField;

+        

+        private bool directField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisAccessControlPrincipalType principal {

+            get {

+                return this.principalField;

+            }

+            set {

+                this.principalField = value;

+                this.RaisePropertyChanged("principal");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("permission", Order=1)]

+        public string[] permission {

+            get {

+                return this.permissionField;

+            }

+            set {

+                this.permissionField = value;

+                this.RaisePropertyChanged("permission");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=2)]

+        public bool direct {

+            get {

+                return this.directField;

+            }

+            set {

+                this.directField = value;

+                this.RaisePropertyChanged("direct");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=3)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisAccessControlListType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisAccessControlEntryType[] permissionField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("permission", Order=0)]

+        public cmisAccessControlEntryType[] permission {

+            get {

+                return this.permissionField;

+            }

+            set {

+                this.permissionField = value;

+                this.RaisePropertyChanged("permission");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChangeEventType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private enumTypeOfChanges changeTypeField;

+        

+        private System.DateTime changeTimeField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public enumTypeOfChanges changeType {

+            get {

+                return this.changeTypeField;

+            }

+            set {

+                this.changeTypeField = value;

+                this.RaisePropertyChanged("changeType");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public System.DateTime changeTime {

+            get {

+                return this.changeTimeField;

+            }

+            set {

+                this.changeTimeField = value;

+                this.RaisePropertyChanged("changeTime");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumTypeOfChanges {

+        

+        /// <remarks/>

+        created,

+        

+        /// <remarks/>

+        updated,

+        

+        /// <remarks/>

+        deleted,

+        

+        /// <remarks/>

+        security,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisAllowableActionsType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private bool canDeleteObjectField;

+        

+        private bool canDeleteObjectFieldSpecified;

+        

+        private bool canUpdatePropertiesField;

+        

+        private bool canUpdatePropertiesFieldSpecified;

+        

+        private bool canGetFolderTreeField;

+        

+        private bool canGetFolderTreeFieldSpecified;

+        

+        private bool canGetPropertiesField;

+        

+        private bool canGetPropertiesFieldSpecified;

+        

+        private bool canGetObjectRelationshipsField;

+        

+        private bool canGetObjectRelationshipsFieldSpecified;

+        

+        private bool canGetObjectParentsField;

+        

+        private bool canGetObjectParentsFieldSpecified;

+        

+        private bool canGetFolderParentField;

+        

+        private bool canGetFolderParentFieldSpecified;

+        

+        private bool canGetDescendantsField;

+        

+        private bool canGetDescendantsFieldSpecified;

+        

+        private bool canMoveObjectField;

+        

+        private bool canMoveObjectFieldSpecified;

+        

+        private bool canDeleteContentStreamField;

+        

+        private bool canDeleteContentStreamFieldSpecified;

+        

+        private bool canCheckOutField;

+        

+        private bool canCheckOutFieldSpecified;

+        

+        private bool canCancelCheckOutField;

+        

+        private bool canCancelCheckOutFieldSpecified;

+        

+        private bool canCheckInField;

+        

+        private bool canCheckInFieldSpecified;

+        

+        private bool canSetContentStreamField;

+        

+        private bool canSetContentStreamFieldSpecified;

+        

+        private bool canGetAllVersionsField;

+        

+        private bool canGetAllVersionsFieldSpecified;

+        

+        private bool canAddObjectToFolderField;

+        

+        private bool canAddObjectToFolderFieldSpecified;

+        

+        private bool canRemoveObjectFromFolderField;

+        

+        private bool canRemoveObjectFromFolderFieldSpecified;

+        

+        private bool canGetContentStreamField;

+        

+        private bool canGetContentStreamFieldSpecified;

+        

+        private bool canApplyPolicyField;

+        

+        private bool canApplyPolicyFieldSpecified;

+        

+        private bool canGetAppliedPoliciesField;

+        

+        private bool canGetAppliedPoliciesFieldSpecified;

+        

+        private bool canRemovePolicyField;

+        

+        private bool canRemovePolicyFieldSpecified;

+        

+        private bool canGetChildrenField;

+        

+        private bool canGetChildrenFieldSpecified;

+        

+        private bool canCreateDocumentField;

+        

+        private bool canCreateDocumentFieldSpecified;

+        

+        private bool canCreateFolderField;

+        

+        private bool canCreateFolderFieldSpecified;

+        

+        private bool canCreateRelationshipField;

+        

+        private bool canCreateRelationshipFieldSpecified;

+        

+        private bool canDeleteTreeField;

+        

+        private bool canDeleteTreeFieldSpecified;

+        

+        private bool canGetRenditionsField;

+        

+        private bool canGetRenditionsFieldSpecified;

+        

+        private bool canGetACLField;

+        

+        private bool canGetACLFieldSpecified;

+        

+        private bool canApplyACLField;

+        

+        private bool canApplyACLFieldSpecified;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public bool canDeleteObject {

+            get {

+                return this.canDeleteObjectField;

+            }

+            set {

+                this.canDeleteObjectField = value;

+                this.RaisePropertyChanged("canDeleteObject");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canDeleteObjectSpecified {

+            get {

+                return this.canDeleteObjectFieldSpecified;

+            }

+            set {

+                this.canDeleteObjectFieldSpecified = value;

+                this.RaisePropertyChanged("canDeleteObjectSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public bool canUpdateProperties {

+            get {

+                return this.canUpdatePropertiesField;

+            }

+            set {

+                this.canUpdatePropertiesField = value;

+                this.RaisePropertyChanged("canUpdateProperties");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canUpdatePropertiesSpecified {

+            get {

+                return this.canUpdatePropertiesFieldSpecified;

+            }

+            set {

+                this.canUpdatePropertiesFieldSpecified = value;

+                this.RaisePropertyChanged("canUpdatePropertiesSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=2)]

+        public bool canGetFolderTree {

+            get {

+                return this.canGetFolderTreeField;

+            }

+            set {

+                this.canGetFolderTreeField = value;

+                this.RaisePropertyChanged("canGetFolderTree");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetFolderTreeSpecified {

+            get {

+                return this.canGetFolderTreeFieldSpecified;

+            }

+            set {

+                this.canGetFolderTreeFieldSpecified = value;

+                this.RaisePropertyChanged("canGetFolderTreeSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public bool canGetProperties {

+            get {

+                return this.canGetPropertiesField;

+            }

+            set {

+                this.canGetPropertiesField = value;

+                this.RaisePropertyChanged("canGetProperties");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetPropertiesSpecified {

+            get {

+                return this.canGetPropertiesFieldSpecified;

+            }

+            set {

+                this.canGetPropertiesFieldSpecified = value;

+                this.RaisePropertyChanged("canGetPropertiesSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=4)]

+        public bool canGetObjectRelationships {

+            get {

+                return this.canGetObjectRelationshipsField;

+            }

+            set {

+                this.canGetObjectRelationshipsField = value;

+                this.RaisePropertyChanged("canGetObjectRelationships");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetObjectRelationshipsSpecified {

+            get {

+                return this.canGetObjectRelationshipsFieldSpecified;

+            }

+            set {

+                this.canGetObjectRelationshipsFieldSpecified = value;

+                this.RaisePropertyChanged("canGetObjectRelationshipsSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=5)]

+        public bool canGetObjectParents {

+            get {

+                return this.canGetObjectParentsField;

+            }

+            set {

+                this.canGetObjectParentsField = value;

+                this.RaisePropertyChanged("canGetObjectParents");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetObjectParentsSpecified {

+            get {

+                return this.canGetObjectParentsFieldSpecified;

+            }

+            set {

+                this.canGetObjectParentsFieldSpecified = value;

+                this.RaisePropertyChanged("canGetObjectParentsSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=6)]

+        public bool canGetFolderParent {

+            get {

+                return this.canGetFolderParentField;

+            }

+            set {

+                this.canGetFolderParentField = value;

+                this.RaisePropertyChanged("canGetFolderParent");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetFolderParentSpecified {

+            get {

+                return this.canGetFolderParentFieldSpecified;

+            }

+            set {

+                this.canGetFolderParentFieldSpecified = value;

+                this.RaisePropertyChanged("canGetFolderParentSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=7)]

+        public bool canGetDescendants {

+            get {

+                return this.canGetDescendantsField;

+            }

+            set {

+                this.canGetDescendantsField = value;

+                this.RaisePropertyChanged("canGetDescendants");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetDescendantsSpecified {

+            get {

+                return this.canGetDescendantsFieldSpecified;

+            }

+            set {

+                this.canGetDescendantsFieldSpecified = value;

+                this.RaisePropertyChanged("canGetDescendantsSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=8)]

+        public bool canMoveObject {

+            get {

+                return this.canMoveObjectField;

+            }

+            set {

+                this.canMoveObjectField = value;

+                this.RaisePropertyChanged("canMoveObject");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canMoveObjectSpecified {

+            get {

+                return this.canMoveObjectFieldSpecified;

+            }

+            set {

+                this.canMoveObjectFieldSpecified = value;

+                this.RaisePropertyChanged("canMoveObjectSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=9)]

+        public bool canDeleteContentStream {

+            get {

+                return this.canDeleteContentStreamField;

+            }

+            set {

+                this.canDeleteContentStreamField = value;

+                this.RaisePropertyChanged("canDeleteContentStream");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canDeleteContentStreamSpecified {

+            get {

+                return this.canDeleteContentStreamFieldSpecified;

+            }

+            set {

+                this.canDeleteContentStreamFieldSpecified = value;

+                this.RaisePropertyChanged("canDeleteContentStreamSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=10)]

+        public bool canCheckOut {

+            get {

+                return this.canCheckOutField;

+            }

+            set {

+                this.canCheckOutField = value;

+                this.RaisePropertyChanged("canCheckOut");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canCheckOutSpecified {

+            get {

+                return this.canCheckOutFieldSpecified;

+            }

+            set {

+                this.canCheckOutFieldSpecified = value;

+                this.RaisePropertyChanged("canCheckOutSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=11)]

+        public bool canCancelCheckOut {

+            get {

+                return this.canCancelCheckOutField;

+            }

+            set {

+                this.canCancelCheckOutField = value;

+                this.RaisePropertyChanged("canCancelCheckOut");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canCancelCheckOutSpecified {

+            get {

+                return this.canCancelCheckOutFieldSpecified;

+            }

+            set {

+                this.canCancelCheckOutFieldSpecified = value;

+                this.RaisePropertyChanged("canCancelCheckOutSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=12)]

+        public bool canCheckIn {

+            get {

+                return this.canCheckInField;

+            }

+            set {

+                this.canCheckInField = value;

+                this.RaisePropertyChanged("canCheckIn");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canCheckInSpecified {

+            get {

+                return this.canCheckInFieldSpecified;

+            }

+            set {

+                this.canCheckInFieldSpecified = value;

+                this.RaisePropertyChanged("canCheckInSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=13)]

+        public bool canSetContentStream {

+            get {

+                return this.canSetContentStreamField;

+            }

+            set {

+                this.canSetContentStreamField = value;

+                this.RaisePropertyChanged("canSetContentStream");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canSetContentStreamSpecified {

+            get {

+                return this.canSetContentStreamFieldSpecified;

+            }

+            set {

+                this.canSetContentStreamFieldSpecified = value;

+                this.RaisePropertyChanged("canSetContentStreamSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=14)]

+        public bool canGetAllVersions {

+            get {

+                return this.canGetAllVersionsField;

+            }

+            set {

+                this.canGetAllVersionsField = value;

+                this.RaisePropertyChanged("canGetAllVersions");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetAllVersionsSpecified {

+            get {

+                return this.canGetAllVersionsFieldSpecified;

+            }

+            set {

+                this.canGetAllVersionsFieldSpecified = value;

+                this.RaisePropertyChanged("canGetAllVersionsSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=15)]

+        public bool canAddObjectToFolder {

+            get {

+                return this.canAddObjectToFolderField;

+            }

+            set {

+                this.canAddObjectToFolderField = value;

+                this.RaisePropertyChanged("canAddObjectToFolder");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canAddObjectToFolderSpecified {

+            get {

+                return this.canAddObjectToFolderFieldSpecified;

+            }

+            set {

+                this.canAddObjectToFolderFieldSpecified = value;

+                this.RaisePropertyChanged("canAddObjectToFolderSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=16)]

+        public bool canRemoveObjectFromFolder {

+            get {

+                return this.canRemoveObjectFromFolderField;

+            }

+            set {

+                this.canRemoveObjectFromFolderField = value;

+                this.RaisePropertyChanged("canRemoveObjectFromFolder");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canRemoveObjectFromFolderSpecified {

+            get {

+                return this.canRemoveObjectFromFolderFieldSpecified;

+            }

+            set {

+                this.canRemoveObjectFromFolderFieldSpecified = value;

+                this.RaisePropertyChanged("canRemoveObjectFromFolderSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=17)]

+        public bool canGetContentStream {

+            get {

+                return this.canGetContentStreamField;

+            }

+            set {

+                this.canGetContentStreamField = value;

+                this.RaisePropertyChanged("canGetContentStream");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetContentStreamSpecified {

+            get {

+                return this.canGetContentStreamFieldSpecified;

+            }

+            set {

+                this.canGetContentStreamFieldSpecified = value;

+                this.RaisePropertyChanged("canGetContentStreamSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=18)]

+        public bool canApplyPolicy {

+            get {

+                return this.canApplyPolicyField;

+            }

+            set {

+                this.canApplyPolicyField = value;

+                this.RaisePropertyChanged("canApplyPolicy");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canApplyPolicySpecified {

+            get {

+                return this.canApplyPolicyFieldSpecified;

+            }

+            set {

+                this.canApplyPolicyFieldSpecified = value;

+                this.RaisePropertyChanged("canApplyPolicySpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=19)]

+        public bool canGetAppliedPolicies {

+            get {

+                return this.canGetAppliedPoliciesField;

+            }

+            set {

+                this.canGetAppliedPoliciesField = value;

+                this.RaisePropertyChanged("canGetAppliedPolicies");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetAppliedPoliciesSpecified {

+            get {

+                return this.canGetAppliedPoliciesFieldSpecified;

+            }

+            set {

+                this.canGetAppliedPoliciesFieldSpecified = value;

+                this.RaisePropertyChanged("canGetAppliedPoliciesSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=20)]

+        public bool canRemovePolicy {

+            get {

+                return this.canRemovePolicyField;

+            }

+            set {

+                this.canRemovePolicyField = value;

+                this.RaisePropertyChanged("canRemovePolicy");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canRemovePolicySpecified {

+            get {

+                return this.canRemovePolicyFieldSpecified;

+            }

+            set {

+                this.canRemovePolicyFieldSpecified = value;

+                this.RaisePropertyChanged("canRemovePolicySpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=21)]

+        public bool canGetChildren {

+            get {

+                return this.canGetChildrenField;

+            }

+            set {

+                this.canGetChildrenField = value;

+                this.RaisePropertyChanged("canGetChildren");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetChildrenSpecified {

+            get {

+                return this.canGetChildrenFieldSpecified;

+            }

+            set {

+                this.canGetChildrenFieldSpecified = value;

+                this.RaisePropertyChanged("canGetChildrenSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=22)]

+        public bool canCreateDocument {

+            get {

+                return this.canCreateDocumentField;

+            }

+            set {

+                this.canCreateDocumentField = value;

+                this.RaisePropertyChanged("canCreateDocument");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canCreateDocumentSpecified {

+            get {

+                return this.canCreateDocumentFieldSpecified;

+            }

+            set {

+                this.canCreateDocumentFieldSpecified = value;

+                this.RaisePropertyChanged("canCreateDocumentSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=23)]

+        public bool canCreateFolder {

+            get {

+                return this.canCreateFolderField;

+            }

+            set {

+                this.canCreateFolderField = value;

+                this.RaisePropertyChanged("canCreateFolder");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canCreateFolderSpecified {

+            get {

+                return this.canCreateFolderFieldSpecified;

+            }

+            set {

+                this.canCreateFolderFieldSpecified = value;

+                this.RaisePropertyChanged("canCreateFolderSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=24)]

+        public bool canCreateRelationship {

+            get {

+                return this.canCreateRelationshipField;

+            }

+            set {

+                this.canCreateRelationshipField = value;

+                this.RaisePropertyChanged("canCreateRelationship");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canCreateRelationshipSpecified {

+            get {

+                return this.canCreateRelationshipFieldSpecified;

+            }

+            set {

+                this.canCreateRelationshipFieldSpecified = value;

+                this.RaisePropertyChanged("canCreateRelationshipSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=25)]

+        public bool canDeleteTree {

+            get {

+                return this.canDeleteTreeField;

+            }

+            set {

+                this.canDeleteTreeField = value;

+                this.RaisePropertyChanged("canDeleteTree");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canDeleteTreeSpecified {

+            get {

+                return this.canDeleteTreeFieldSpecified;

+            }

+            set {

+                this.canDeleteTreeFieldSpecified = value;

+                this.RaisePropertyChanged("canDeleteTreeSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=26)]

+        public bool canGetRenditions {

+            get {

+                return this.canGetRenditionsField;

+            }

+            set {

+                this.canGetRenditionsField = value;

+                this.RaisePropertyChanged("canGetRenditions");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetRenditionsSpecified {

+            get {

+                return this.canGetRenditionsFieldSpecified;

+            }

+            set {

+                this.canGetRenditionsFieldSpecified = value;

+                this.RaisePropertyChanged("canGetRenditionsSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=27)]

+        public bool canGetACL {

+            get {

+                return this.canGetACLField;

+            }

+            set {

+                this.canGetACLField = value;

+                this.RaisePropertyChanged("canGetACL");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canGetACLSpecified {

+            get {

+                return this.canGetACLFieldSpecified;

+            }

+            set {

+                this.canGetACLFieldSpecified = value;

+                this.RaisePropertyChanged("canGetACLSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=28)]

+        public bool canApplyACL {

+            get {

+                return this.canApplyACLField;

+            }

+            set {

+                this.canApplyACLField = value;

+                this.RaisePropertyChanged("canApplyACL");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool canApplyACLSpecified {

+            get {

+                return this.canApplyACLFieldSpecified;

+            }

+            set {

+                this.canApplyACLFieldSpecified = value;

+                this.RaisePropertyChanged("canApplyACLSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=29)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyUri))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyString))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyHtml))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyDecimal))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyDateTime))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyInteger))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyId))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyBoolean))]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisProperty : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string propertyDefinitionIdField;

+        

+        private string localNameField;

+        

+        private string displayNameField;

+        

+        private string queryNameField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAttributeAttribute()]

+        public string propertyDefinitionId {

+            get {

+                return this.propertyDefinitionIdField;

+            }

+            set {

+                this.propertyDefinitionIdField = value;

+                this.RaisePropertyChanged("propertyDefinitionId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAttributeAttribute()]

+        public string localName {

+            get {

+                return this.localNameField;

+            }

+            set {

+                this.localNameField = value;

+                this.RaisePropertyChanged("localName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAttributeAttribute()]

+        public string displayName {

+            get {

+                return this.displayNameField;

+            }

+            set {

+                this.displayNameField = value;

+                this.RaisePropertyChanged("displayName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAttributeAttribute()]

+        public string queryName {

+            get {

+                return this.queryNameField;

+            }

+            set {

+                this.queryNameField = value;

+                this.RaisePropertyChanged("queryName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyUri : cmisProperty {

+        

+        private string[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", DataType="anyURI", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyString : cmisProperty {

+        

+        private string[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyHtml : cmisProperty {

+        

+        private string[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyDecimal : cmisProperty {

+        

+        private decimal[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public decimal[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyDateTime : cmisProperty {

+        

+        private System.DateTime[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public System.DateTime[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyInteger : cmisProperty {

+        

+        private string[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", DataType="integer", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyId : cmisProperty {

+        

+        private string[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyBoolean : cmisProperty {

+        

+        private bool[] valueField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public bool[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertiesType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisProperty[] itemsField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("propertyBoolean", typeof(cmisPropertyBoolean), IsNullable=true, Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyDateTime", typeof(cmisPropertyDateTime), IsNullable=true, Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyDecimal", typeof(cmisPropertyDecimal), IsNullable=true, Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyHtml", typeof(cmisPropertyHtml), IsNullable=true, Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyId", typeof(cmisPropertyId), IsNullable=true, Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyInteger", typeof(cmisPropertyInteger), IsNullable=true, Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyString", typeof(cmisPropertyString), IsNullable=true, Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyUri", typeof(cmisPropertyUri), IsNullable=true, Order=0)]

+        public cmisProperty[] Items {

+            get {

+                return this.itemsField;

+            }

+            set {

+                this.itemsField = value;

+                this.RaisePropertyChanged("Items");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisObjectType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisPropertiesType propertiesField;

+        

+        private cmisAllowableActionsType allowableActionsField;

+        

+        private cmisObjectType[] relationshipField;

+        

+        private cmisChangeEventType changeEventInfoField;

+        

+        private cmisAccessControlListType aclField;

+        

+        private bool exactACLField;

+        

+        private bool exactACLFieldSpecified;

+        

+        private cmisListOfIdsType policyIdsField;

+        

+        private cmisRenditionType[] renditionField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertiesType properties {

+            get {

+                return this.propertiesField;

+            }

+            set {

+                this.propertiesField = value;

+                this.RaisePropertyChanged("properties");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public cmisAllowableActionsType allowableActions {

+            get {

+                return this.allowableActionsField;

+            }

+            set {

+                this.allowableActionsField = value;

+                this.RaisePropertyChanged("allowableActions");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("relationship", Order=2)]

+        public cmisObjectType[] relationship {

+            get {

+                return this.relationshipField;

+            }

+            set {

+                this.relationshipField = value;

+                this.RaisePropertyChanged("relationship");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public cmisChangeEventType changeEventInfo {

+            get {

+                return this.changeEventInfoField;

+            }

+            set {

+                this.changeEventInfoField = value;

+                this.RaisePropertyChanged("changeEventInfo");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=4)]

+        public cmisAccessControlListType acl {

+            get {

+                return this.aclField;

+            }

+            set {

+                this.aclField = value;

+                this.RaisePropertyChanged("acl");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=5)]

+        public bool exactACL {

+            get {

+                return this.exactACLField;

+            }

+            set {

+                this.exactACLField = value;

+                this.RaisePropertyChanged("exactACL");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool exactACLSpecified {

+            get {

+                return this.exactACLFieldSpecified;

+            }

+            set {

+                this.exactACLFieldSpecified = value;

+                this.RaisePropertyChanged("exactACLSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=6)]

+        public cmisListOfIdsType policyIds {

+            get {

+                return this.policyIdsField;

+            }

+            set {

+                this.policyIdsField = value;

+                this.RaisePropertyChanged("policyIds");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("rendition", Order=7)]

+        public cmisRenditionType[] rendition {

+            get {

+                return this.renditionField;

+            }

+            set {

+                this.renditionField = value;

+                this.RaisePropertyChanged("rendition");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=8)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisObjectListType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisObjectType[] objectsField;

+        

+        private bool hasMoreItemsField;

+        

+        private string numItemsField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("objects", Order=0)]

+        public cmisObjectType[] objects {

+            get {

+                return this.objectsField;

+            }

+            set {

+                this.objectsField = value;

+                this.RaisePropertyChanged("objects");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public bool hasMoreItems {

+            get {

+                return this.hasMoreItemsField;

+            }

+            set {

+                this.hasMoreItemsField = value;

+                this.RaisePropertyChanged("hasMoreItems");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=2)]

+        public string numItems {

+            get {

+                return this.numItemsField;

+            }

+            set {

+                this.numItemsField = value;

+                this.RaisePropertyChanged("numItems");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=3)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisExtensionType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=0)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.DiscoveryServicePort")]

+    internal interface DiscoveryServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message queryRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.queryResponse query(DotCMIS.CMISWebServicesReference.queryRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getContentChangesRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getContentChangesResponse getContentChanges(DotCMIS.CMISWebServicesReference.getContentChangesRequest request);

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumIncludeRelationships {

+        

+        /// <remarks/>

+        none,

+        

+        /// <remarks/>

+        source,

+        

+        /// <remarks/>

+        target,

+        

+        /// <remarks/>

+        both,

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="query", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class queryRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string statement;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> searchAllVersions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string maxItems;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string skipCount;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=9)]

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr;

+        

+        public queryRequest() {

+        }

+        

+        public queryRequest(string repositoryId, string statement, System.Nullable<bool> searchAllVersions, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension, System.Xml.XmlAttribute[] AnyAttr) {

+            this.repositoryId = repositoryId;

+            this.statement = statement;

+            this.searchAllVersions = searchAllVersions;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.maxItems = maxItems;

+            this.skipCount = skipCount;

+            this.extension = extension;

+            this.AnyAttr = AnyAttr;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="queryResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class queryResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType objects;

+        

+        public queryResponse() {

+        }

+        

+        public queryResponse(DotCMIS.CMISWebServicesReference.cmisObjectListType objects) {

+            this.objects = objects;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getContentChanges", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getContentChangesRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string changeLogToken;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeProperties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePolicyIds;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeACL;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string maxItems;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getContentChangesRequest() {

+        }

+        

+        public getContentChangesRequest(string repositoryId, string changeLogToken, System.Nullable<bool> includeProperties, string filter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, string maxItems, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.changeLogToken = changeLogToken;

+            this.includeProperties = includeProperties;

+            this.filter = filter;

+            this.includePolicyIds = includePolicyIds;

+            this.includeACL = includeACL;

+            this.maxItems = maxItems;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getContentChangesResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getContentChangesResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType objects;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string changeLogToken;

+        

+        public getContentChangesResponse() {

+        }

+        

+        public getContentChangesResponse(DotCMIS.CMISWebServicesReference.cmisObjectListType objects, string changeLogToken) {

+            this.objects = objects;

+            this.changeLogToken = changeLogToken;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface DiscoveryServicePortChannel : DotCMIS.CMISWebServicesReference.DiscoveryServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class DiscoveryServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.DiscoveryServicePort>, DotCMIS.CMISWebServicesReference.DiscoveryServicePort {

+        

+        public DiscoveryServicePortClient() {

+        }

+        

+        public DiscoveryServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public DiscoveryServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public DiscoveryServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public DiscoveryServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.queryResponse DotCMIS.CMISWebServicesReference.DiscoveryServicePort.query(DotCMIS.CMISWebServicesReference.queryRequest request) {

+            return base.Channel.query(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType query(string repositoryId, string statement, System.Nullable<bool> searchAllVersions, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension, System.Xml.XmlAttribute[] AnyAttr) {

+            DotCMIS.CMISWebServicesReference.queryRequest inValue = new DotCMIS.CMISWebServicesReference.queryRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.statement = statement;

+            inValue.searchAllVersions = searchAllVersions;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.maxItems = maxItems;

+            inValue.skipCount = skipCount;

+            inValue.extension = extension;

+            inValue.AnyAttr = AnyAttr;

+            DotCMIS.CMISWebServicesReference.queryResponse retVal = ((DotCMIS.CMISWebServicesReference.DiscoveryServicePort)(this)).query(inValue);

+            return retVal.objects;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getContentChangesResponse DotCMIS.CMISWebServicesReference.DiscoveryServicePort.getContentChanges(DotCMIS.CMISWebServicesReference.getContentChangesRequest request) {

+            return base.Channel.getContentChanges(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType getContentChanges(string repositoryId, ref string changeLogToken, System.Nullable<bool> includeProperties, string filter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, string maxItems, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getContentChangesRequest inValue = new DotCMIS.CMISWebServicesReference.getContentChangesRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.changeLogToken = changeLogToken;

+            inValue.includeProperties = includeProperties;

+            inValue.filter = filter;

+            inValue.includePolicyIds = includePolicyIds;

+            inValue.includeACL = includeACL;

+            inValue.maxItems = maxItems;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getContentChangesResponse retVal = ((DotCMIS.CMISWebServicesReference.DiscoveryServicePort)(this)).getContentChanges(inValue);

+            changeLogToken = retVal.changeLogToken;

+            return retVal.objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.MultiFilingServicePort")]

+    internal interface MultiFilingServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message addObjectToFolderRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.addObjectToFolderResponse addObjectToFolder(DotCMIS.CMISWebServicesReference.addObjectToFolderRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message removeObjectFromFolderRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.removeObjectFromFolderResponse removeObjectFromFolder(DotCMIS.CMISWebServicesReference.removeObjectFromFolderRequest request);

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="addObjectToFolder", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class addObjectToFolderRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        public bool allVersions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public addObjectToFolderRequest() {

+        }

+        

+        public addObjectToFolderRequest(string repositoryId, string objectId, string folderId, bool allVersions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.folderId = folderId;

+            this.allVersions = allVersions;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="addObjectToFolderResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class addObjectToFolderResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public addObjectToFolderResponse() {

+        }

+        

+        public addObjectToFolderResponse(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="removeObjectFromFolder", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class removeObjectFromFolderRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public removeObjectFromFolderRequest() {

+        }

+        

+        public removeObjectFromFolderRequest(string repositoryId, string objectId, string folderId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.folderId = folderId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="removeObjectFromFolderResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class removeObjectFromFolderResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public removeObjectFromFolderResponse() {

+        }

+        

+        public removeObjectFromFolderResponse(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.extension = extension;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface MultiFilingServicePortChannel : DotCMIS.CMISWebServicesReference.MultiFilingServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class MultiFilingServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.MultiFilingServicePort>, DotCMIS.CMISWebServicesReference.MultiFilingServicePort {

+        

+        public MultiFilingServicePortClient() {

+        }

+        

+        public MultiFilingServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public MultiFilingServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public MultiFilingServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public MultiFilingServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.addObjectToFolderResponse DotCMIS.CMISWebServicesReference.MultiFilingServicePort.addObjectToFolder(DotCMIS.CMISWebServicesReference.addObjectToFolderRequest request) {

+            return base.Channel.addObjectToFolder(request);

+        }

+        

+        public void addObjectToFolder(string repositoryId, string objectId, string folderId, bool allVersions, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.addObjectToFolderRequest inValue = new DotCMIS.CMISWebServicesReference.addObjectToFolderRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.folderId = folderId;

+            inValue.allVersions = allVersions;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.addObjectToFolderResponse retVal = ((DotCMIS.CMISWebServicesReference.MultiFilingServicePort)(this)).addObjectToFolder(inValue);

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.removeObjectFromFolderResponse DotCMIS.CMISWebServicesReference.MultiFilingServicePort.removeObjectFromFolder(DotCMIS.CMISWebServicesReference.removeObjectFromFolderRequest request) {

+            return base.Channel.removeObjectFromFolder(request);

+        }

+        

+        public void removeObjectFromFolder(string repositoryId, string objectId, string folderId, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.removeObjectFromFolderRequest inValue = new DotCMIS.CMISWebServicesReference.removeObjectFromFolderRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.folderId = folderId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.removeObjectFromFolderResponse retVal = ((DotCMIS.CMISWebServicesReference.MultiFilingServicePort)(this)).removeObjectFromFolder(inValue);

+            extension = retVal.extension;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.NavigationServicePort")]

+    internal interface NavigationServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getDescendantsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getDescendantsResponse getDescendants(DotCMIS.CMISWebServicesReference.getDescendantsRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getChildrenRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getChildrenResponse getChildren(DotCMIS.CMISWebServicesReference.getChildrenRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getFolderParentRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getFolderParentResponse getFolderParent(DotCMIS.CMISWebServicesReference.getFolderParentRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getFolderTreeRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getFolderTreeResponse getFolderTree(DotCMIS.CMISWebServicesReference.getFolderTreeRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getObjectParentsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getObjectParentsResponse getObjectParents(DotCMIS.CMISWebServicesReference.getObjectParentsRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getCheckedOutDocsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getCheckedOutDocsResponse getCheckedOutDocs(DotCMIS.CMISWebServicesReference.getCheckedOutDocsRequest request);

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisObjectInFolderContainerType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisObjectInFolderType objectInFolderField;

+        

+        private cmisObjectInFolderContainerType[] childrenField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisObjectInFolderType objectInFolder {

+            get {

+                return this.objectInFolderField;

+            }

+            set {

+                this.objectInFolderField = value;

+                this.RaisePropertyChanged("objectInFolder");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("children", Order=1)]

+        public cmisObjectInFolderContainerType[] children {

+            get {

+                return this.childrenField;

+            }

+            set {

+                this.childrenField = value;

+                this.RaisePropertyChanged("children");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisObjectInFolderType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisObjectType objectField;

+        

+        private string pathSegmentField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisObjectType @object {

+            get {

+                return this.objectField;

+            }

+            set {

+                this.objectField = value;

+                this.RaisePropertyChanged("object");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string pathSegment {

+            get {

+                return this.pathSegmentField;

+            }

+            set {

+                this.pathSegmentField = value;

+                this.RaisePropertyChanged("pathSegment");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getDescendants", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getDescendantsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string depth;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePathSegment;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getDescendantsRequest() {

+        }

+        

+        public getDescendantsRequest(string repositoryId, string folderId, string depth, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePathSegment, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.folderId = folderId;

+            this.depth = depth;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.includePathSegment = includePathSegment;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getDescendantsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getDescendantsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("objects")]

+        public cmisObjectInFolderContainerType[] objects;

+        

+        public getDescendantsResponse() {

+        }

+        

+        public getDescendantsResponse(cmisObjectInFolderContainerType[] objects) {

+            this.objects = objects;

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisObjectInFolderListType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisObjectInFolderType[] objectsField;

+        

+        private bool hasMoreItemsField;

+        

+        private string numItemsField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("objects", Order=0)]

+        public cmisObjectInFolderType[] objects {

+            get {

+                return this.objectsField;

+            }

+            set {

+                this.objectsField = value;

+                this.RaisePropertyChanged("objects");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public bool hasMoreItems {

+            get {

+                return this.hasMoreItemsField;

+            }

+            set {

+                this.hasMoreItemsField = value;

+                this.RaisePropertyChanged("hasMoreItems");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=2)]

+        public string numItems {

+            get {

+                return this.numItemsField;

+            }

+            set {

+                this.numItemsField = value;

+                this.RaisePropertyChanged("numItems");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=3)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getChildren", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getChildrenRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string orderBy;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePathSegment;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string maxItems;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=9)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string skipCount;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=10)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getChildrenRequest() {

+        }

+        

+        public getChildrenRequest(string repositoryId, string folderId, string filter, string orderBy, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePathSegment, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.folderId = folderId;

+            this.filter = filter;

+            this.orderBy = orderBy;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.includePathSegment = includePathSegment;

+            this.maxItems = maxItems;

+            this.skipCount = skipCount;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getChildrenResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getChildrenResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType objects;

+        

+        public getChildrenResponse() {

+        }

+        

+        public getChildrenResponse(DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType objects) {

+            this.objects = objects;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getFolderParent", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getFolderParentRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getFolderParentRequest() {

+        }

+        

+        public getFolderParentRequest(string repositoryId, string folderId, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.folderId = folderId;

+            this.filter = filter;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getFolderParentResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getFolderParentResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectType @object;

+        

+        public getFolderParentResponse() {

+        }

+        

+        public getFolderParentResponse(DotCMIS.CMISWebServicesReference.cmisObjectType @object) {

+            this.@object = @object;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getFolderTree", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getFolderTreeRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string depth;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePathSegment;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getFolderTreeRequest() {

+        }

+        

+        public getFolderTreeRequest(string repositoryId, string folderId, string depth, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePathSegment, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.folderId = folderId;

+            this.depth = depth;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.includePathSegment = includePathSegment;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getFolderTreeResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getFolderTreeResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("objects")]

+        public cmisObjectInFolderContainerType[] objects;

+        

+        public getFolderTreeResponse() {

+        }

+        

+        public getFolderTreeResponse(cmisObjectInFolderContainerType[] objects) {

+            this.objects = objects;

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisObjectParentsType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisObjectType objectField;

+        

+        private string relativePathSegmentField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisObjectType @object {

+            get {

+                return this.objectField;

+            }

+            set {

+                this.objectField = value;

+                this.RaisePropertyChanged("object");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string relativePathSegment {

+            get {

+                return this.relativePathSegmentField;

+            }

+            set {

+                this.relativePathSegmentField = value;

+                this.RaisePropertyChanged("relativePathSegment");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectParents", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectParentsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeRelativePathSegment;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getObjectParentsRequest() {

+        }

+        

+        public getObjectParentsRequest(string repositoryId, string objectId, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includeRelativePathSegment, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.includeRelativePathSegment = includeRelativePathSegment;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectParentsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectParentsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("parents")]

+        public cmisObjectParentsType[] parents;

+        

+        public getObjectParentsResponse() {

+        }

+        

+        public getObjectParentsResponse(cmisObjectParentsType[] parents) {

+            this.parents = parents;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getCheckedOutDocs", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getCheckedOutDocsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string orderBy;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string maxItems;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string skipCount;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=9)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getCheckedOutDocsRequest() {

+        }

+        

+        public getCheckedOutDocsRequest(string repositoryId, string folderId, string filter, string orderBy, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.folderId = folderId;

+            this.filter = filter;

+            this.orderBy = orderBy;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.maxItems = maxItems;

+            this.skipCount = skipCount;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getCheckedOutDocsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getCheckedOutDocsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType objects;

+        

+        public getCheckedOutDocsResponse() {

+        }

+        

+        public getCheckedOutDocsResponse(DotCMIS.CMISWebServicesReference.cmisObjectListType objects) {

+            this.objects = objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface NavigationServicePortChannel : DotCMIS.CMISWebServicesReference.NavigationServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class NavigationServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.NavigationServicePort>, DotCMIS.CMISWebServicesReference.NavigationServicePort {

+        

+        public NavigationServicePortClient() {

+        }

+        

+        public NavigationServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public NavigationServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public NavigationServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public NavigationServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getDescendantsResponse DotCMIS.CMISWebServicesReference.NavigationServicePort.getDescendants(DotCMIS.CMISWebServicesReference.getDescendantsRequest request) {

+            return base.Channel.getDescendants(request);

+        }

+        

+        public cmisObjectInFolderContainerType[] getDescendants(string repositoryId, string folderId, string depth, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePathSegment, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getDescendantsRequest inValue = new DotCMIS.CMISWebServicesReference.getDescendantsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.folderId = folderId;

+            inValue.depth = depth;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.includePathSegment = includePathSegment;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getDescendantsResponse retVal = ((DotCMIS.CMISWebServicesReference.NavigationServicePort)(this)).getDescendants(inValue);

+            return retVal.objects;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getChildrenResponse DotCMIS.CMISWebServicesReference.NavigationServicePort.getChildren(DotCMIS.CMISWebServicesReference.getChildrenRequest request) {

+            return base.Channel.getChildren(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectInFolderListType getChildren(string repositoryId, string folderId, string filter, string orderBy, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePathSegment, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getChildrenRequest inValue = new DotCMIS.CMISWebServicesReference.getChildrenRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.folderId = folderId;

+            inValue.filter = filter;

+            inValue.orderBy = orderBy;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.includePathSegment = includePathSegment;

+            inValue.maxItems = maxItems;

+            inValue.skipCount = skipCount;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getChildrenResponse retVal = ((DotCMIS.CMISWebServicesReference.NavigationServicePort)(this)).getChildren(inValue);

+            return retVal.objects;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getFolderParentResponse DotCMIS.CMISWebServicesReference.NavigationServicePort.getFolderParent(DotCMIS.CMISWebServicesReference.getFolderParentRequest request) {

+            return base.Channel.getFolderParent(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectType getFolderParent(string repositoryId, string folderId, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getFolderParentRequest inValue = new DotCMIS.CMISWebServicesReference.getFolderParentRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.folderId = folderId;

+            inValue.filter = filter;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getFolderParentResponse retVal = ((DotCMIS.CMISWebServicesReference.NavigationServicePort)(this)).getFolderParent(inValue);

+            return retVal.@object;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getFolderTreeResponse DotCMIS.CMISWebServicesReference.NavigationServicePort.getFolderTree(DotCMIS.CMISWebServicesReference.getFolderTreeRequest request) {

+            return base.Channel.getFolderTree(request);

+        }

+        

+        public cmisObjectInFolderContainerType[] getFolderTree(string repositoryId, string folderId, string depth, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePathSegment, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getFolderTreeRequest inValue = new DotCMIS.CMISWebServicesReference.getFolderTreeRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.folderId = folderId;

+            inValue.depth = depth;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.includePathSegment = includePathSegment;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getFolderTreeResponse retVal = ((DotCMIS.CMISWebServicesReference.NavigationServicePort)(this)).getFolderTree(inValue);

+            return retVal.objects;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getObjectParentsResponse DotCMIS.CMISWebServicesReference.NavigationServicePort.getObjectParents(DotCMIS.CMISWebServicesReference.getObjectParentsRequest request) {

+            return base.Channel.getObjectParents(request);

+        }

+        

+        public cmisObjectParentsType[] getObjectParents(string repositoryId, string objectId, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includeRelativePathSegment, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getObjectParentsRequest inValue = new DotCMIS.CMISWebServicesReference.getObjectParentsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.includeRelativePathSegment = includeRelativePathSegment;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getObjectParentsResponse retVal = ((DotCMIS.CMISWebServicesReference.NavigationServicePort)(this)).getObjectParents(inValue);

+            return retVal.parents;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getCheckedOutDocsResponse DotCMIS.CMISWebServicesReference.NavigationServicePort.getCheckedOutDocs(DotCMIS.CMISWebServicesReference.getCheckedOutDocsRequest request) {

+            return base.Channel.getCheckedOutDocs(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType getCheckedOutDocs(string repositoryId, string folderId, string filter, string orderBy, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getCheckedOutDocsRequest inValue = new DotCMIS.CMISWebServicesReference.getCheckedOutDocsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.folderId = folderId;

+            inValue.filter = filter;

+            inValue.orderBy = orderBy;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.maxItems = maxItems;

+            inValue.skipCount = skipCount;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getCheckedOutDocsResponse retVal = ((DotCMIS.CMISWebServicesReference.NavigationServicePort)(this)).getCheckedOutDocs(inValue);

+            return retVal.objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.ObjectServicePort")]

+    internal interface ObjectServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message createDocumentRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.createDocumentResponse createDocument(DotCMIS.CMISWebServicesReference.createDocumentRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message createDocumentFromSourceRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.createDocumentFromSourceResponse createDocumentFromSource(DotCMIS.CMISWebServicesReference.createDocumentFromSourceRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message createFolderRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.createFolderResponse createFolder(DotCMIS.CMISWebServicesReference.createFolderRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message createRelationshipRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.createRelationshipResponse createRelationship(DotCMIS.CMISWebServicesReference.createRelationshipRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message createPolicyRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.createPolicyResponse createPolicy(DotCMIS.CMISWebServicesReference.createPolicyRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getAllowableActionsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getAllowableActionsResponse getAllowableActions(DotCMIS.CMISWebServicesReference.getAllowableActionsRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getObjectRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getObjectResponse getObject(DotCMIS.CMISWebServicesReference.getObjectRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getPropertiesRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getPropertiesResponse getProperties(DotCMIS.CMISWebServicesReference.getPropertiesRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getRenditionsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getRenditionsResponse getRenditions(DotCMIS.CMISWebServicesReference.getRenditionsRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getObjectByPathRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getObjectByPathResponse getObjectByPath(DotCMIS.CMISWebServicesReference.getObjectByPathRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getContentStreamRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getContentStreamResponse getContentStream(DotCMIS.CMISWebServicesReference.getContentStreamRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message updatePropertiesRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.updatePropertiesResponse updateProperties(DotCMIS.CMISWebServicesReference.updatePropertiesRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message moveObjectRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.moveObjectResponse moveObject(DotCMIS.CMISWebServicesReference.moveObjectRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message deleteObjectRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.deleteObjectResponse deleteObject(DotCMIS.CMISWebServicesReference.deleteObjectRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message deleteTreeRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.deleteTreeResponse deleteTree(DotCMIS.CMISWebServicesReference.deleteTreeRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message setContentStreamRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.setContentStreamResponse setContentStream(DotCMIS.CMISWebServicesReference.setContentStreamRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message deleteContentStreamRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.deleteContentStreamResponse deleteContentStream(DotCMIS.CMISWebServicesReference.deleteContentStreamRequest request);

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisContentStreamType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string lengthField;

+        

+        private string mimeTypeField;

+        

+        private string filenameField;

+        

+        private byte[] streamField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=0)]

+        public string length {

+            get {

+                return this.lengthField;

+            }

+            set {

+                this.lengthField = value;

+                this.RaisePropertyChanged("length");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string mimeType {

+            get {

+                return this.mimeTypeField;

+            }

+            set {

+                this.mimeTypeField = value;

+                this.RaisePropertyChanged("mimeType");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=2)]

+        public string filename {

+            get {

+                return this.filenameField;

+            }

+            set {

+                this.filenameField = value;

+                this.RaisePropertyChanged("filename");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary", Order=3)]

+        public byte[] stream {

+            get {

+                return this.streamField;

+            }

+            set {

+                this.streamField = value;

+                this.RaisePropertyChanged("stream");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=4)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumVersioningState {

+        

+        /// <remarks/>

+        none,

+        

+        /// <remarks/>

+        checkedout,

+        

+        /// <remarks/>

+        minor,

+        

+        /// <remarks/>

+        major,

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createDocument", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createDocumentRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumVersioningState> versioningState;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute("policies", IsNullable=true)]

+        public string[] policies;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createDocumentRequest() {

+        }

+        

+        public createDocumentRequest(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream, System.Nullable<enumVersioningState> versioningState, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.properties = properties;

+            this.folderId = folderId;

+            this.contentStream = contentStream;

+            this.versioningState = versioningState;

+            this.policies = policies;

+            this.addACEs = addACEs;

+            this.removeACEs = removeACEs;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createDocumentResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createDocumentResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createDocumentResponse() {

+        }

+        

+        public createDocumentResponse(string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createDocumentFromSource", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createDocumentFromSourceRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string sourceId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumVersioningState> versioningState;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute("policies", IsNullable=true)]

+        public string[] policies;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createDocumentFromSourceRequest() {

+        }

+        

+        public createDocumentFromSourceRequest(string repositoryId, string sourceId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, System.Nullable<enumVersioningState> versioningState, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.sourceId = sourceId;

+            this.properties = properties;

+            this.folderId = folderId;

+            this.versioningState = versioningState;

+            this.policies = policies;

+            this.addACEs = addACEs;

+            this.removeACEs = removeACEs;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createDocumentFromSourceResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createDocumentFromSourceResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createDocumentFromSourceResponse() {

+        }

+        

+        public createDocumentFromSourceResponse(string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createFolder", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createFolderRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute("policies", IsNullable=true)]

+        public string[] policies;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createFolderRequest() {

+        }

+        

+        public createFolderRequest(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.properties = properties;

+            this.folderId = folderId;

+            this.policies = policies;

+            this.addACEs = addACEs;

+            this.removeACEs = removeACEs;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createFolderResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createFolderResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createFolderResponse() {

+        }

+        

+        public createFolderResponse(string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createRelationship", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createRelationshipRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute("policies", IsNullable=true)]

+        public string[] policies;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createRelationshipRequest() {

+        }

+        

+        public createRelationshipRequest(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.properties = properties;

+            this.policies = policies;

+            this.addACEs = addACEs;

+            this.removeACEs = removeACEs;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createRelationshipResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createRelationshipResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createRelationshipResponse() {

+        }

+        

+        public createRelationshipResponse(string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createPolicy", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createPolicyRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute("policies", IsNullable=true)]

+        public string[] policies;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createPolicyRequest() {

+        }

+        

+        public createPolicyRequest(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.properties = properties;

+            this.folderId = folderId;

+            this.policies = policies;

+            this.addACEs = addACEs;

+            this.removeACEs = removeACEs;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="createPolicyResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class createPolicyResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public createPolicyResponse() {

+        }

+        

+        public createPolicyResponse(string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getAllowableActions", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getAllowableActionsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getAllowableActionsRequest() {

+        }

+        

+        public getAllowableActionsRequest(string repositoryId, string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getAllowableActionsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getAllowableActionsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisAllowableActionsType allowableActions;

+        

+        public getAllowableActionsResponse() {

+        }

+        

+        public getAllowableActionsResponse(DotCMIS.CMISWebServicesReference.cmisAllowableActionsType allowableActions) {

+            this.allowableActions = allowableActions;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObject", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePolicyIds;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeACL;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getObjectRequest() {

+        }

+        

+        public getObjectRequest(string repositoryId, string objectId, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.includePolicyIds = includePolicyIds;

+            this.includeACL = includeACL;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectType @object;

+        

+        public getObjectResponse() {

+        }

+        

+        public getObjectResponse(DotCMIS.CMISWebServicesReference.cmisObjectType @object) {

+            this.@object = @object;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getProperties", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getPropertiesRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getPropertiesRequest() {

+        }

+        

+        public getPropertiesRequest(string repositoryId, string objectId, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.filter = filter;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getPropertiesResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getPropertiesResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        public getPropertiesResponse() {

+        }

+        

+        public getPropertiesResponse(DotCMIS.CMISWebServicesReference.cmisPropertiesType properties) {

+            this.properties = properties;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getRenditions", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getRenditionsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string maxItems;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string skipCount;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getRenditionsRequest() {

+        }

+        

+        public getRenditionsRequest(string repositoryId, string objectId, string renditionFilter, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.renditionFilter = renditionFilter;

+            this.maxItems = maxItems;

+            this.skipCount = skipCount;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getRenditionsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getRenditionsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("renditions")]

+        public cmisRenditionType[] renditions;

+        

+        public getRenditionsResponse() {

+        }

+        

+        public getRenditionsResponse(cmisRenditionType[] renditions) {

+            this.renditions = renditions;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectByPath", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectByPathRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string path;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePolicyIds;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeACL;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getObjectByPathRequest() {

+        }

+        

+        public getObjectByPathRequest(string repositoryId, string path, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.path = path;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.includePolicyIds = includePolicyIds;

+            this.includeACL = includeACL;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectByPathResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectByPathResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectType @object;

+        

+        public getObjectByPathResponse() {

+        }

+        

+        public getObjectByPathResponse(DotCMIS.CMISWebServicesReference.cmisObjectType @object) {

+            this.@object = @object;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getContentStream", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getContentStreamRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string streamId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string offset;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string length;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getContentStreamRequest() {

+        }

+        

+        public getContentStreamRequest(string repositoryId, string objectId, string streamId, string offset, string length, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.streamId = streamId;

+            this.offset = offset;

+            this.length = length;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getContentStreamResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getContentStreamResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream;

+        

+        public getContentStreamResponse() {

+        }

+        

+        public getContentStreamResponse(DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream) {

+            this.contentStream = contentStream;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="updateProperties", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class updatePropertiesRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string changeToken;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public updatePropertiesRequest() {

+        }

+        

+        public updatePropertiesRequest(string repositoryId, string objectId, string changeToken, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.changeToken = changeToken;

+            this.properties = properties;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="updatePropertiesResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class updatePropertiesResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string changeToken;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public updatePropertiesResponse() {

+        }

+        

+        public updatePropertiesResponse(string objectId, string changeToken, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.changeToken = changeToken;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="moveObject", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class moveObjectRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public string targetFolderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        public string sourceFolderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public moveObjectRequest() {

+        }

+        

+        public moveObjectRequest(string repositoryId, string objectId, string targetFolderId, string sourceFolderId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.targetFolderId = targetFolderId;

+            this.sourceFolderId = sourceFolderId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="moveObjectResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class moveObjectResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public moveObjectResponse() {

+        }

+        

+        public moveObjectResponse(string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="deleteObject", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class deleteObjectRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> allVersions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public deleteObjectRequest() {

+        }

+        

+        public deleteObjectRequest(string repositoryId, string objectId, System.Nullable<bool> allVersions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.allVersions = allVersions;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="deleteObjectResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class deleteObjectResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public deleteObjectResponse() {

+        }

+        

+        public deleteObjectResponse(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.extension = extension;

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumUnfileObject {

+        

+        /// <remarks/>

+        unfile,

+        

+        /// <remarks/>

+        deletesinglefiled,

+        

+        /// <remarks/>

+        delete,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class deleteTreeResponseFailedToDelete : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string[] objectIdsField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("objectIds", Order=0)]

+        public string[] objectIds {

+            get {

+                return this.objectIdsField;

+            }

+            set {

+                this.objectIdsField = value;

+                this.RaisePropertyChanged("objectIds");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=1)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="deleteTree", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class deleteTreeRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string folderId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> allVersions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumUnfileObject> unfileObjects;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> continueOnFailure;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public deleteTreeRequest() {

+        }

+        

+        public deleteTreeRequest(string repositoryId, string folderId, System.Nullable<bool> allVersions, System.Nullable<enumUnfileObject> unfileObjects, System.Nullable<bool> continueOnFailure, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.folderId = folderId;

+            this.allVersions = allVersions;

+            this.unfileObjects = unfileObjects;

+            this.continueOnFailure = continueOnFailure;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="deleteTreeResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class deleteTreeResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete failedToDelete;

+        

+        public deleteTreeResponse() {

+        }

+        

+        public deleteTreeResponse(DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete failedToDelete) {

+            this.failedToDelete = failedToDelete;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="setContentStream", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class setContentStreamRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> overwriteFlag;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string changeToken;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        public DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public setContentStreamRequest() {

+        }

+        

+        public setContentStreamRequest(string repositoryId, string objectId, System.Nullable<bool> overwriteFlag, string changeToken, DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.overwriteFlag = overwriteFlag;

+            this.changeToken = changeToken;

+            this.contentStream = contentStream;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="setContentStreamResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class setContentStreamResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string changeToken;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public setContentStreamResponse() {

+        }

+        

+        public setContentStreamResponse(string objectId, string changeToken, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.changeToken = changeToken;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="deleteContentStream", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class deleteContentStreamRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public string changeToken;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public deleteContentStreamRequest() {

+        }

+        

+        public deleteContentStreamRequest(string repositoryId, string objectId, string changeToken, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.changeToken = changeToken;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="deleteContentStreamResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class deleteContentStreamResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string changeToken;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public deleteContentStreamResponse() {

+        }

+        

+        public deleteContentStreamResponse(string objectId, string changeToken, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.changeToken = changeToken;

+            this.extension = extension;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface ObjectServicePortChannel : DotCMIS.CMISWebServicesReference.ObjectServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class ObjectServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.ObjectServicePort>, DotCMIS.CMISWebServicesReference.ObjectServicePort {

+        

+        public ObjectServicePortClient() {

+        }

+        

+        public ObjectServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public ObjectServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public ObjectServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public ObjectServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.createDocumentResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.createDocument(DotCMIS.CMISWebServicesReference.createDocumentRequest request) {

+            return base.Channel.createDocument(request);

+        }

+        

+        public string createDocument(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream, System.Nullable<enumVersioningState> versioningState, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.createDocumentRequest inValue = new DotCMIS.CMISWebServicesReference.createDocumentRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.properties = properties;

+            inValue.folderId = folderId;

+            inValue.contentStream = contentStream;

+            inValue.versioningState = versioningState;

+            inValue.policies = policies;

+            inValue.addACEs = addACEs;

+            inValue.removeACEs = removeACEs;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.createDocumentResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).createDocument(inValue);

+            extension = retVal.extension;

+            return retVal.objectId;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.createDocumentFromSourceResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.createDocumentFromSource(DotCMIS.CMISWebServicesReference.createDocumentFromSourceRequest request) {

+            return base.Channel.createDocumentFromSource(request);

+        }

+        

+        public string createDocumentFromSource(string repositoryId, string sourceId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, System.Nullable<enumVersioningState> versioningState, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.createDocumentFromSourceRequest inValue = new DotCMIS.CMISWebServicesReference.createDocumentFromSourceRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.sourceId = sourceId;

+            inValue.properties = properties;

+            inValue.folderId = folderId;

+            inValue.versioningState = versioningState;

+            inValue.policies = policies;

+            inValue.addACEs = addACEs;

+            inValue.removeACEs = removeACEs;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.createDocumentFromSourceResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).createDocumentFromSource(inValue);

+            extension = retVal.extension;

+            return retVal.objectId;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.createFolderResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.createFolder(DotCMIS.CMISWebServicesReference.createFolderRequest request) {

+            return base.Channel.createFolder(request);

+        }

+        

+        public string createFolder(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.createFolderRequest inValue = new DotCMIS.CMISWebServicesReference.createFolderRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.properties = properties;

+            inValue.folderId = folderId;

+            inValue.policies = policies;

+            inValue.addACEs = addACEs;

+            inValue.removeACEs = removeACEs;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.createFolderResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).createFolder(inValue);

+            extension = retVal.extension;

+            return retVal.objectId;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.createRelationshipResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.createRelationship(DotCMIS.CMISWebServicesReference.createRelationshipRequest request) {

+            return base.Channel.createRelationship(request);

+        }

+        

+        public string createRelationship(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.createRelationshipRequest inValue = new DotCMIS.CMISWebServicesReference.createRelationshipRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.properties = properties;

+            inValue.policies = policies;

+            inValue.addACEs = addACEs;

+            inValue.removeACEs = removeACEs;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.createRelationshipResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).createRelationship(inValue);

+            extension = retVal.extension;

+            return retVal.objectId;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.createPolicyResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.createPolicy(DotCMIS.CMISWebServicesReference.createPolicyRequest request) {

+            return base.Channel.createPolicy(request);

+        }

+        

+        public string createPolicy(string repositoryId, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, string folderId, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.createPolicyRequest inValue = new DotCMIS.CMISWebServicesReference.createPolicyRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.properties = properties;

+            inValue.folderId = folderId;

+            inValue.policies = policies;

+            inValue.addACEs = addACEs;

+            inValue.removeACEs = removeACEs;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.createPolicyResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).createPolicy(inValue);

+            extension = retVal.extension;

+            return retVal.objectId;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getAllowableActionsResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.getAllowableActions(DotCMIS.CMISWebServicesReference.getAllowableActionsRequest request) {

+            return base.Channel.getAllowableActions(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisAllowableActionsType getAllowableActions(string repositoryId, string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getAllowableActionsRequest inValue = new DotCMIS.CMISWebServicesReference.getAllowableActionsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getAllowableActionsResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).getAllowableActions(inValue);

+            return retVal.allowableActions;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getObjectResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.getObject(DotCMIS.CMISWebServicesReference.getObjectRequest request) {

+            return base.Channel.getObject(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectType getObject(string repositoryId, string objectId, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getObjectRequest inValue = new DotCMIS.CMISWebServicesReference.getObjectRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.includePolicyIds = includePolicyIds;

+            inValue.includeACL = includeACL;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getObjectResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).getObject(inValue);

+            return retVal.@object;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getPropertiesResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.getProperties(DotCMIS.CMISWebServicesReference.getPropertiesRequest request) {

+            return base.Channel.getProperties(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType getProperties(string repositoryId, string objectId, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getPropertiesRequest inValue = new DotCMIS.CMISWebServicesReference.getPropertiesRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.filter = filter;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getPropertiesResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).getProperties(inValue);

+            return retVal.properties;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getRenditionsResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.getRenditions(DotCMIS.CMISWebServicesReference.getRenditionsRequest request) {

+            return base.Channel.getRenditions(request);

+        }

+        

+        public cmisRenditionType[] getRenditions(string repositoryId, string objectId, string renditionFilter, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getRenditionsRequest inValue = new DotCMIS.CMISWebServicesReference.getRenditionsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.renditionFilter = renditionFilter;

+            inValue.maxItems = maxItems;

+            inValue.skipCount = skipCount;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getRenditionsResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).getRenditions(inValue);

+            return retVal.renditions;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getObjectByPathResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.getObjectByPath(DotCMIS.CMISWebServicesReference.getObjectByPathRequest request) {

+            return base.Channel.getObjectByPath(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectType getObjectByPath(string repositoryId, string path, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getObjectByPathRequest inValue = new DotCMIS.CMISWebServicesReference.getObjectByPathRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.path = path;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.includePolicyIds = includePolicyIds;

+            inValue.includeACL = includeACL;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getObjectByPathResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).getObjectByPath(inValue);

+            return retVal.@object;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getContentStreamResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.getContentStream(DotCMIS.CMISWebServicesReference.getContentStreamRequest request) {

+            return base.Channel.getContentStream(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisContentStreamType getContentStream(string repositoryId, string objectId, string streamId, string offset, string length, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getContentStreamRequest inValue = new DotCMIS.CMISWebServicesReference.getContentStreamRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.streamId = streamId;

+            inValue.offset = offset;

+            inValue.length = length;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getContentStreamResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).getContentStream(inValue);

+            return retVal.contentStream;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.updatePropertiesResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.updateProperties(DotCMIS.CMISWebServicesReference.updatePropertiesRequest request) {

+            return base.Channel.updateProperties(request);

+        }

+        

+        public void updateProperties(string repositoryId, ref string objectId, ref string changeToken, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.updatePropertiesRequest inValue = new DotCMIS.CMISWebServicesReference.updatePropertiesRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.changeToken = changeToken;

+            inValue.properties = properties;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.updatePropertiesResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).updateProperties(inValue);

+            objectId = retVal.objectId;

+            changeToken = retVal.changeToken;

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.moveObjectResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.moveObject(DotCMIS.CMISWebServicesReference.moveObjectRequest request) {

+            return base.Channel.moveObject(request);

+        }

+        

+        public void moveObject(string repositoryId, ref string objectId, string targetFolderId, string sourceFolderId, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.moveObjectRequest inValue = new DotCMIS.CMISWebServicesReference.moveObjectRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.targetFolderId = targetFolderId;

+            inValue.sourceFolderId = sourceFolderId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.moveObjectResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).moveObject(inValue);

+            objectId = retVal.objectId;

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.deleteObjectResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.deleteObject(DotCMIS.CMISWebServicesReference.deleteObjectRequest request) {

+            return base.Channel.deleteObject(request);

+        }

+        

+        public void deleteObject(string repositoryId, string objectId, System.Nullable<bool> allVersions, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.deleteObjectRequest inValue = new DotCMIS.CMISWebServicesReference.deleteObjectRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.allVersions = allVersions;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.deleteObjectResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).deleteObject(inValue);

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.deleteTreeResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.deleteTree(DotCMIS.CMISWebServicesReference.deleteTreeRequest request) {

+            return base.Channel.deleteTree(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.deleteTreeResponseFailedToDelete deleteTree(string repositoryId, string folderId, System.Nullable<bool> allVersions, System.Nullable<enumUnfileObject> unfileObjects, System.Nullable<bool> continueOnFailure, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.deleteTreeRequest inValue = new DotCMIS.CMISWebServicesReference.deleteTreeRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.folderId = folderId;

+            inValue.allVersions = allVersions;

+            inValue.unfileObjects = unfileObjects;

+            inValue.continueOnFailure = continueOnFailure;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.deleteTreeResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).deleteTree(inValue);

+            return retVal.failedToDelete;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.setContentStreamResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.setContentStream(DotCMIS.CMISWebServicesReference.setContentStreamRequest request) {

+            return base.Channel.setContentStream(request);

+        }

+        

+        public void setContentStream(string repositoryId, ref string objectId, System.Nullable<bool> overwriteFlag, ref string changeToken, DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.setContentStreamRequest inValue = new DotCMIS.CMISWebServicesReference.setContentStreamRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.overwriteFlag = overwriteFlag;

+            inValue.changeToken = changeToken;

+            inValue.contentStream = contentStream;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.setContentStreamResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).setContentStream(inValue);

+            objectId = retVal.objectId;

+            changeToken = retVal.changeToken;

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.deleteContentStreamResponse DotCMIS.CMISWebServicesReference.ObjectServicePort.deleteContentStream(DotCMIS.CMISWebServicesReference.deleteContentStreamRequest request) {

+            return base.Channel.deleteContentStream(request);

+        }

+        

+        public void deleteContentStream(string repositoryId, ref string objectId, ref string changeToken, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.deleteContentStreamRequest inValue = new DotCMIS.CMISWebServicesReference.deleteContentStreamRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.changeToken = changeToken;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.deleteContentStreamResponse retVal = ((DotCMIS.CMISWebServicesReference.ObjectServicePort)(this)).deleteContentStream(inValue);

+            objectId = retVal.objectId;

+            changeToken = retVal.changeToken;

+            extension = retVal.extension;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.PolicyServicePort")]

+    internal interface PolicyServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message applyPolicyRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.applyPolicyResponse applyPolicy(DotCMIS.CMISWebServicesReference.applyPolicyRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message removePolicyRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.removePolicyResponse removePolicy(DotCMIS.CMISWebServicesReference.removePolicyRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getAppliedPoliciesRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getAppliedPoliciesResponse getAppliedPolicies(DotCMIS.CMISWebServicesReference.getAppliedPoliciesRequest request);

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="applyPolicy", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class applyPolicyRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string policyId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public applyPolicyRequest() {

+        }

+        

+        public applyPolicyRequest(string repositoryId, string policyId, string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.policyId = policyId;

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="applyPolicyResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class applyPolicyResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public applyPolicyResponse() {

+        }

+        

+        public applyPolicyResponse(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="removePolicy", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class removePolicyRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string policyId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public removePolicyRequest() {

+        }

+        

+        public removePolicyRequest(string repositoryId, string policyId, string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.policyId = policyId;

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="removePolicyResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class removePolicyResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public removePolicyResponse() {

+        }

+        

+        public removePolicyResponse(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getAppliedPolicies", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getAppliedPoliciesRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getAppliedPoliciesRequest() {

+        }

+        

+        public getAppliedPoliciesRequest(string repositoryId, string objectId, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.filter = filter;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getAppliedPoliciesResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getAppliedPoliciesResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("objects")]

+        public cmisObjectType[] objects;

+        

+        public getAppliedPoliciesResponse() {

+        }

+        

+        public getAppliedPoliciesResponse(cmisObjectType[] objects) {

+            this.objects = objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface PolicyServicePortChannel : DotCMIS.CMISWebServicesReference.PolicyServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class PolicyServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.PolicyServicePort>, DotCMIS.CMISWebServicesReference.PolicyServicePort {

+        

+        public PolicyServicePortClient() {

+        }

+        

+        public PolicyServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public PolicyServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public PolicyServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public PolicyServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.applyPolicyResponse DotCMIS.CMISWebServicesReference.PolicyServicePort.applyPolicy(DotCMIS.CMISWebServicesReference.applyPolicyRequest request) {

+            return base.Channel.applyPolicy(request);

+        }

+        

+        public void applyPolicy(string repositoryId, string policyId, string objectId, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.applyPolicyRequest inValue = new DotCMIS.CMISWebServicesReference.applyPolicyRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.policyId = policyId;

+            inValue.objectId = objectId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.applyPolicyResponse retVal = ((DotCMIS.CMISWebServicesReference.PolicyServicePort)(this)).applyPolicy(inValue);

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.removePolicyResponse DotCMIS.CMISWebServicesReference.PolicyServicePort.removePolicy(DotCMIS.CMISWebServicesReference.removePolicyRequest request) {

+            return base.Channel.removePolicy(request);

+        }

+        

+        public void removePolicy(string repositoryId, string policyId, string objectId, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.removePolicyRequest inValue = new DotCMIS.CMISWebServicesReference.removePolicyRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.policyId = policyId;

+            inValue.objectId = objectId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.removePolicyResponse retVal = ((DotCMIS.CMISWebServicesReference.PolicyServicePort)(this)).removePolicy(inValue);

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getAppliedPoliciesResponse DotCMIS.CMISWebServicesReference.PolicyServicePort.getAppliedPolicies(DotCMIS.CMISWebServicesReference.getAppliedPoliciesRequest request) {

+            return base.Channel.getAppliedPolicies(request);

+        }

+        

+        public cmisObjectType[] getAppliedPolicies(string repositoryId, string objectId, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getAppliedPoliciesRequest inValue = new DotCMIS.CMISWebServicesReference.getAppliedPoliciesRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.filter = filter;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getAppliedPoliciesResponse retVal = ((DotCMIS.CMISWebServicesReference.PolicyServicePort)(this)).getAppliedPolicies(inValue);

+            return retVal.objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.RelationshipServicePort")]

+    internal interface RelationshipServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getObjectRelationshipsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getObjectRelationshipsResponse getObjectRelationships(DotCMIS.CMISWebServicesReference.getObjectRelationshipsRequest request);

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumRelationshipDirection {

+        

+        /// <remarks/>

+        source,

+        

+        /// <remarks/>

+        target,

+        

+        /// <remarks/>

+        either,

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectRelationships", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectRelationshipsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public bool includeSubRelationshipTypes;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumRelationshipDirection> relationshipDirection;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string typeId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string maxItems;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string skipCount;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=9)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getObjectRelationshipsRequest() {

+        }

+        

+        public getObjectRelationshipsRequest(string repositoryId, string objectId, bool includeSubRelationshipTypes, System.Nullable<enumRelationshipDirection> relationshipDirection, string typeId, string filter, System.Nullable<bool> includeAllowableActions, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.includeSubRelationshipTypes = includeSubRelationshipTypes;

+            this.relationshipDirection = relationshipDirection;

+            this.typeId = typeId;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.maxItems = maxItems;

+            this.skipCount = skipCount;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectRelationshipsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectRelationshipsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType objects;

+        

+        public getObjectRelationshipsResponse() {

+        }

+        

+        public getObjectRelationshipsResponse(DotCMIS.CMISWebServicesReference.cmisObjectListType objects) {

+            this.objects = objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface RelationshipServicePortChannel : DotCMIS.CMISWebServicesReference.RelationshipServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class RelationshipServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.RelationshipServicePort>, DotCMIS.CMISWebServicesReference.RelationshipServicePort {

+        

+        public RelationshipServicePortClient() {

+        }

+        

+        public RelationshipServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public RelationshipServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public RelationshipServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public RelationshipServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getObjectRelationshipsResponse DotCMIS.CMISWebServicesReference.RelationshipServicePort.getObjectRelationships(DotCMIS.CMISWebServicesReference.getObjectRelationshipsRequest request) {

+            return base.Channel.getObjectRelationships(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectListType getObjectRelationships(string repositoryId, string objectId, bool includeSubRelationshipTypes, System.Nullable<enumRelationshipDirection> relationshipDirection, string typeId, string filter, System.Nullable<bool> includeAllowableActions, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getObjectRelationshipsRequest inValue = new DotCMIS.CMISWebServicesReference.getObjectRelationshipsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.includeSubRelationshipTypes = includeSubRelationshipTypes;

+            inValue.relationshipDirection = relationshipDirection;

+            inValue.typeId = typeId;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.maxItems = maxItems;

+            inValue.skipCount = skipCount;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getObjectRelationshipsResponse retVal = ((DotCMIS.CMISWebServicesReference.RelationshipServicePort)(this)).getObjectRelationships(inValue);

+            return retVal.objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.RepositoryServicePort")]

+    internal interface RepositoryServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getRepositoriesRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getRepositoriesResponse getRepositories(DotCMIS.CMISWebServicesReference.getRepositoriesRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getRepositoryInfoRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getRepositoryInfoResponse getRepositoryInfo(DotCMIS.CMISWebServicesReference.getRepositoryInfoRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getTypeChildrenRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getTypeChildrenResponse getTypeChildren(DotCMIS.CMISWebServicesReference.getTypeChildrenRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getTypeDescendantsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getTypeDescendantsResponse getTypeDescendants(DotCMIS.CMISWebServicesReference.getTypeDescendantsRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getTypeDefinitionRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getTypeDefinitionResponse getTypeDefinition(DotCMIS.CMISWebServicesReference.getTypeDefinitionRequest request);

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisRepositoryEntryType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string repositoryIdField;

+        

+        private string repositoryNameField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public string repositoryId {

+            get {

+                return this.repositoryIdField;

+            }

+            set {

+                this.repositoryIdField = value;

+                this.RaisePropertyChanged("repositoryId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string repositoryName {

+            get {

+                return this.repositoryNameField;

+            }

+            set {

+                this.repositoryNameField = value;

+                this.RaisePropertyChanged("repositoryName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getRepositories", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getRepositoriesRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getRepositoriesRequest() {

+        }

+        

+        public getRepositoriesRequest(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getRepositoriesResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getRepositoriesResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("repositories", IsNullable=true)]

+        public cmisRepositoryEntryType[] repositories;

+        

+        public getRepositoriesResponse() {

+        }

+        

+        public getRepositoriesResponse(cmisRepositoryEntryType[] repositories) {

+            this.repositories = repositories;

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisRepositoryInfoType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string repositoryIdField;

+        

+        private string repositoryNameField;

+        

+        private string repositoryDescriptionField;

+        

+        private string vendorNameField;

+        

+        private string productNameField;

+        

+        private string productVersionField;

+        

+        private string rootFolderIdField;

+        

+        private string latestChangeLogTokenField;

+        

+        private cmisRepositoryCapabilitiesType capabilitiesField;

+        

+        private cmisACLCapabilityType aclCapabilityField;

+        

+        private string cmisVersionSupportedField;

+        

+        private string thinClientURIField;

+        

+        private bool changesIncompleteField;

+        

+        private bool changesIncompleteFieldSpecified;

+        

+        private enumBaseObjectTypeIds[] changesOnTypeField;

+        

+        private string principalAnonymousField;

+        

+        private string principalAnyoneField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public string repositoryId {

+            get {

+                return this.repositoryIdField;

+            }

+            set {

+                this.repositoryIdField = value;

+                this.RaisePropertyChanged("repositoryId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string repositoryName {

+            get {

+                return this.repositoryNameField;

+            }

+            set {

+                this.repositoryNameField = value;

+                this.RaisePropertyChanged("repositoryName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=2)]

+        public string repositoryDescription {

+            get {

+                return this.repositoryDescriptionField;

+            }

+            set {

+                this.repositoryDescriptionField = value;

+                this.RaisePropertyChanged("repositoryDescription");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public string vendorName {

+            get {

+                return this.vendorNameField;

+            }

+            set {

+                this.vendorNameField = value;

+                this.RaisePropertyChanged("vendorName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=4)]

+        public string productName {

+            get {

+                return this.productNameField;

+            }

+            set {

+                this.productNameField = value;

+                this.RaisePropertyChanged("productName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=5)]

+        public string productVersion {

+            get {

+                return this.productVersionField;

+            }

+            set {

+                this.productVersionField = value;

+                this.RaisePropertyChanged("productVersion");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=6)]

+        public string rootFolderId {

+            get {

+                return this.rootFolderIdField;

+            }

+            set {

+                this.rootFolderIdField = value;

+                this.RaisePropertyChanged("rootFolderId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=7)]

+        public string latestChangeLogToken {

+            get {

+                return this.latestChangeLogTokenField;

+            }

+            set {

+                this.latestChangeLogTokenField = value;

+                this.RaisePropertyChanged("latestChangeLogToken");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=8)]

+        public cmisRepositoryCapabilitiesType capabilities {

+            get {

+                return this.capabilitiesField;

+            }

+            set {

+                this.capabilitiesField = value;

+                this.RaisePropertyChanged("capabilities");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=9)]

+        public cmisACLCapabilityType aclCapability {

+            get {

+                return this.aclCapabilityField;

+            }

+            set {

+                this.aclCapabilityField = value;

+                this.RaisePropertyChanged("aclCapability");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=10)]

+        public string cmisVersionSupported {

+            get {

+                return this.cmisVersionSupportedField;

+            }

+            set {

+                this.cmisVersionSupportedField = value;

+                this.RaisePropertyChanged("cmisVersionSupported");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="anyURI", Order=11)]

+        public string thinClientURI {

+            get {

+                return this.thinClientURIField;

+            }

+            set {

+                this.thinClientURIField = value;

+                this.RaisePropertyChanged("thinClientURI");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=12)]

+        public bool changesIncomplete {

+            get {

+                return this.changesIncompleteField;

+            }

+            set {

+                this.changesIncompleteField = value;

+                this.RaisePropertyChanged("changesIncomplete");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool changesIncompleteSpecified {

+            get {

+                return this.changesIncompleteFieldSpecified;

+            }

+            set {

+                this.changesIncompleteFieldSpecified = value;

+                this.RaisePropertyChanged("changesIncompleteSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("changesOnType", Order=13)]

+        public enumBaseObjectTypeIds[] changesOnType {

+            get {

+                return this.changesOnTypeField;

+            }

+            set {

+                this.changesOnTypeField = value;

+                this.RaisePropertyChanged("changesOnType");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=14)]

+        public string principalAnonymous {

+            get {

+                return this.principalAnonymousField;

+            }

+            set {

+                this.principalAnonymousField = value;

+                this.RaisePropertyChanged("principalAnonymous");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=15)]

+        public string principalAnyone {

+            get {

+                return this.principalAnyoneField;

+            }

+            set {

+                this.principalAnyoneField = value;

+                this.RaisePropertyChanged("principalAnyone");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=16)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisRepositoryCapabilitiesType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private enumCapabilityACL capabilityACLField;

+        

+        private bool capabilityAllVersionsSearchableField;

+        

+        private enumCapabilityChanges capabilityChangesField;

+        

+        private enumCapabilityContentStreamUpdates capabilityContentStreamUpdatabilityField;

+        

+        private bool capabilityGetDescendantsField;

+        

+        private bool capabilityGetFolderTreeField;

+        

+        private bool capabilityMultifilingField;

+        

+        private bool capabilityPWCSearchableField;

+        

+        private bool capabilityPWCUpdatableField;

+        

+        private enumCapabilityQuery capabilityQueryField;

+        

+        private enumCapabilityRendition capabilityRenditionsField;

+        

+        private bool capabilityUnfilingField;

+        

+        private bool capabilityVersionSpecificFilingField;

+        

+        private enumCapabilityJoin capabilityJoinField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public enumCapabilityACL capabilityACL {

+            get {

+                return this.capabilityACLField;

+            }

+            set {

+                this.capabilityACLField = value;

+                this.RaisePropertyChanged("capabilityACL");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public bool capabilityAllVersionsSearchable {

+            get {

+                return this.capabilityAllVersionsSearchableField;

+            }

+            set {

+                this.capabilityAllVersionsSearchableField = value;

+                this.RaisePropertyChanged("capabilityAllVersionsSearchable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=2)]

+        public enumCapabilityChanges capabilityChanges {

+            get {

+                return this.capabilityChangesField;

+            }

+            set {

+                this.capabilityChangesField = value;

+                this.RaisePropertyChanged("capabilityChanges");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public enumCapabilityContentStreamUpdates capabilityContentStreamUpdatability {

+            get {

+                return this.capabilityContentStreamUpdatabilityField;

+            }

+            set {

+                this.capabilityContentStreamUpdatabilityField = value;

+                this.RaisePropertyChanged("capabilityContentStreamUpdatability");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=4)]

+        public bool capabilityGetDescendants {

+            get {

+                return this.capabilityGetDescendantsField;

+            }

+            set {

+                this.capabilityGetDescendantsField = value;

+                this.RaisePropertyChanged("capabilityGetDescendants");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=5)]

+        public bool capabilityGetFolderTree {

+            get {

+                return this.capabilityGetFolderTreeField;

+            }

+            set {

+                this.capabilityGetFolderTreeField = value;

+                this.RaisePropertyChanged("capabilityGetFolderTree");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=6)]

+        public bool capabilityMultifiling {

+            get {

+                return this.capabilityMultifilingField;

+            }

+            set {

+                this.capabilityMultifilingField = value;

+                this.RaisePropertyChanged("capabilityMultifiling");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=7)]

+        public bool capabilityPWCSearchable {

+            get {

+                return this.capabilityPWCSearchableField;

+            }

+            set {

+                this.capabilityPWCSearchableField = value;

+                this.RaisePropertyChanged("capabilityPWCSearchable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=8)]

+        public bool capabilityPWCUpdatable {

+            get {

+                return this.capabilityPWCUpdatableField;

+            }

+            set {

+                this.capabilityPWCUpdatableField = value;

+                this.RaisePropertyChanged("capabilityPWCUpdatable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=9)]

+        public enumCapabilityQuery capabilityQuery {

+            get {

+                return this.capabilityQueryField;

+            }

+            set {

+                this.capabilityQueryField = value;

+                this.RaisePropertyChanged("capabilityQuery");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=10)]

+        public enumCapabilityRendition capabilityRenditions {

+            get {

+                return this.capabilityRenditionsField;

+            }

+            set {

+                this.capabilityRenditionsField = value;

+                this.RaisePropertyChanged("capabilityRenditions");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=11)]

+        public bool capabilityUnfiling {

+            get {

+                return this.capabilityUnfilingField;

+            }

+            set {

+                this.capabilityUnfilingField = value;

+                this.RaisePropertyChanged("capabilityUnfiling");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=12)]

+        public bool capabilityVersionSpecificFiling {

+            get {

+                return this.capabilityVersionSpecificFilingField;

+            }

+            set {

+                this.capabilityVersionSpecificFilingField = value;

+                this.RaisePropertyChanged("capabilityVersionSpecificFiling");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=13)]

+        public enumCapabilityJoin capabilityJoin {

+            get {

+                return this.capabilityJoinField;

+            }

+            set {

+                this.capabilityJoinField = value;

+                this.RaisePropertyChanged("capabilityJoin");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=14)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumCapabilityACL {

+        

+        /// <remarks/>

+        none,

+        

+        /// <remarks/>

+        discover,

+        

+        /// <remarks/>

+        manage,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumCapabilityChanges {

+        

+        /// <remarks/>

+        none,

+        

+        /// <remarks/>

+        objectidsonly,

+        

+        /// <remarks/>

+        properties,

+        

+        /// <remarks/>

+        all,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumCapabilityContentStreamUpdates {

+        

+        /// <remarks/>

+        anytime,

+        

+        /// <remarks/>

+        pwconly,

+        

+        /// <remarks/>

+        none,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumCapabilityQuery {

+        

+        /// <remarks/>

+        none,

+        

+        /// <remarks/>

+        metadataonly,

+        

+        /// <remarks/>

+        fulltextonly,

+        

+        /// <remarks/>

+        bothseparate,

+        

+        /// <remarks/>

+        bothcombined,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumCapabilityRendition {

+        

+        /// <remarks/>

+        none,

+        

+        /// <remarks/>

+        read,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumCapabilityJoin {

+        

+        /// <remarks/>

+        none,

+        

+        /// <remarks/>

+        inneronly,

+        

+        /// <remarks/>

+        innerandouter,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisACLCapabilityType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private enumSupportedPermissions supportedPermissionsField;

+        

+        private enumACLPropagation propagationField;

+        

+        private cmisPermissionDefinition[] permissionsField;

+        

+        private cmisPermissionMapping[] mappingField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public enumSupportedPermissions supportedPermissions {

+            get {

+                return this.supportedPermissionsField;

+            }

+            set {

+                this.supportedPermissionsField = value;

+                this.RaisePropertyChanged("supportedPermissions");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public enumACLPropagation propagation {

+            get {

+                return this.propagationField;

+            }

+            set {

+                this.propagationField = value;

+                this.RaisePropertyChanged("propagation");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("permissions", Order=2)]

+        public cmisPermissionDefinition[] permissions {

+            get {

+                return this.permissionsField;

+            }

+            set {

+                this.permissionsField = value;

+                this.RaisePropertyChanged("permissions");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("mapping", Order=3)]

+        public cmisPermissionMapping[] mapping {

+            get {

+                return this.mappingField;

+            }

+            set {

+                this.mappingField = value;

+                this.RaisePropertyChanged("mapping");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumSupportedPermissions {

+        

+        /// <remarks/>

+        basic,

+        

+        /// <remarks/>

+        repository,

+        

+        /// <remarks/>

+        both,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumACLPropagation {

+        

+        /// <remarks/>

+        repositorydetermined,

+        

+        /// <remarks/>

+        objectonly,

+        

+        /// <remarks/>

+        propagate,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPermissionDefinition : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string permissionField;

+        

+        private string descriptionField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public string permission {

+            get {

+                return this.permissionField;

+            }

+            set {

+                this.permissionField = value;

+                this.RaisePropertyChanged("permission");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string description {

+            get {

+                return this.descriptionField;

+            }

+            set {

+                this.descriptionField = value;

+                this.RaisePropertyChanged("description");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPermissionMapping : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private enumAllowableActionsKey keyField;

+        

+        private string[] permissionField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public enumAllowableActionsKey key {

+            get {

+                return this.keyField;

+            }

+            set {

+                this.keyField = value;

+                this.RaisePropertyChanged("key");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("permission", Order=1)]

+        public string[] permission {

+            get {

+                return this.permissionField;

+            }

+            set {

+                this.permissionField = value;

+                this.RaisePropertyChanged("permission");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumAllowableActionsKey {

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetDescendents.Folder")]

+        canGetDescendentsFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetChildren.Folder")]

+        canGetChildrenFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetParents.Folder")]

+        canGetParentsFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetFolderParent.Object")]

+        canGetFolderParentObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canCreateDocument.Folder")]

+        canCreateDocumentFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canCreateFolder.Folder")]

+        canCreateFolderFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canCreateRelationship.Source")]

+        canCreateRelationshipSource,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canCreateRelationship.Target")]

+        canCreateRelationshipTarget,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetProperties.Object")]

+        canGetPropertiesObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canViewContent.Object")]

+        canViewContentObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canUpdateProperties.Object")]

+        canUpdatePropertiesObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canMove.Object")]

+        canMoveObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canMove.Target")]

+        canMoveTarget,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canMove.Source")]

+        canMoveSource,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canDelete.Object")]

+        canDeleteObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canDeleteTree.Folder")]

+        canDeleteTreeFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canSetContent.Document")]

+        canSetContentDocument,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canDeleteContent.Document")]

+        canDeleteContentDocument,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canAddToFolder.Object")]

+        canAddToFolderObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canAddToFolder.Folder")]

+        canAddToFolderFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canRemoveFromFolder.Object")]

+        canRemoveFromFolderObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canRemoveFromFolder.Folder")]

+        canRemoveFromFolderFolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canCheckout.Document")]

+        canCheckoutDocument,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canCancelCheckout.Document")]

+        canCancelCheckoutDocument,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canCheckin.Document")]

+        canCheckinDocument,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetAllVersions.VersionSeries")]

+        canGetAllVersionsVersionSeries,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetObjectRelationships.Object")]

+        canGetObjectRelationshipsObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canAddPolicy.Object")]

+        canAddPolicyObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canAddPolicy.Policy")]

+        canAddPolicyPolicy,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canRemovePolicy.Object")]

+        canRemovePolicyObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canRemovePolicy.Policy")]

+        canRemovePolicyPolicy,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetAppliedPolicies.Object")]

+        canGetAppliedPoliciesObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canGetACL.Object")]

+        canGetACLObject,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("canApplyACL.Object")]

+        canApplyACLObject,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumBaseObjectTypeIds {

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("cmis:document")]

+        cmisdocument,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("cmis:folder")]

+        cmisfolder,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("cmis:relationship")]

+        cmisrelationship,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("cmis:policy")]

+        cmispolicy,

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getRepositoryInfo", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getRepositoryInfoRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getRepositoryInfoRequest() {

+        }

+        

+        public getRepositoryInfoRequest(string repositoryId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getRepositoryInfoResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getRepositoryInfoResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType repositoryInfo;

+        

+        public getRepositoryInfoResponse() {

+        }

+        

+        public getRepositoryInfoResponse(DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType repositoryInfo) {

+            this.repositoryInfo = repositoryInfo;

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisTypeDefinitionListType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisTypeDefinitionType[] typesField;

+        

+        private bool hasMoreItemsField;

+        

+        private string numItemsField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("types", Order=0)]

+        public cmisTypeDefinitionType[] types {

+            get {

+                return this.typesField;

+            }

+            set {

+                this.typesField = value;

+                this.RaisePropertyChanged("types");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public bool hasMoreItems {

+            get {

+                return this.hasMoreItemsField;

+            }

+            set {

+                this.hasMoreItemsField = value;

+                this.RaisePropertyChanged("hasMoreItems");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=2)]

+        public string numItems {

+            get {

+                return this.numItemsField;

+            }

+            set {

+                this.numItemsField = value;

+                this.RaisePropertyChanged("numItems");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=3)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisTypePolicyDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisTypeRelationshipDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisTypeFolderDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisTypeDocumentDefinitionType))]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisTypeDefinitionType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string idField;

+        

+        private string localNameField;

+        

+        private string localNamespaceField;

+        

+        private string displayNameField;

+        

+        private string queryNameField;

+        

+        private string descriptionField;

+        

+        private enumBaseObjectTypeIds baseIdField;

+        

+        private string parentIdField;

+        

+        private bool creatableField;

+        

+        private bool fileableField;

+        

+        private bool queryableField;

+        

+        private bool fulltextIndexedField;

+        

+        private bool includedInSupertypeQueryField;

+        

+        private bool controllablePolicyField;

+        

+        private bool controllableACLField;

+        

+        private cmisPropertyDefinitionType[] itemsField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        public cmisTypeDefinitionType() {

+            this.includedInSupertypeQueryField = true;

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public string id {

+            get {

+                return this.idField;

+            }

+            set {

+                this.idField = value;

+                this.RaisePropertyChanged("id");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string localName {

+            get {

+                return this.localNameField;

+            }

+            set {

+                this.localNameField = value;

+                this.RaisePropertyChanged("localName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="anyURI", IsNullable=true, Order=2)]

+        public string localNamespace {

+            get {

+                return this.localNamespaceField;

+            }

+            set {

+                this.localNamespaceField = value;

+                this.RaisePropertyChanged("localNamespace");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public string displayName {

+            get {

+                return this.displayNameField;

+            }

+            set {

+                this.displayNameField = value;

+                this.RaisePropertyChanged("displayName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=4)]

+        public string queryName {

+            get {

+                return this.queryNameField;

+            }

+            set {

+                this.queryNameField = value;

+                this.RaisePropertyChanged("queryName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=5)]

+        public string description {

+            get {

+                return this.descriptionField;

+            }

+            set {

+                this.descriptionField = value;

+                this.RaisePropertyChanged("description");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=6)]

+        public enumBaseObjectTypeIds baseId {

+            get {

+                return this.baseIdField;

+            }

+            set {

+                this.baseIdField = value;

+                this.RaisePropertyChanged("baseId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=7)]

+        public string parentId {

+            get {

+                return this.parentIdField;

+            }

+            set {

+                this.parentIdField = value;

+                this.RaisePropertyChanged("parentId");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=8)]

+        public bool creatable {

+            get {

+                return this.creatableField;

+            }

+            set {

+                this.creatableField = value;

+                this.RaisePropertyChanged("creatable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=9)]

+        public bool fileable {

+            get {

+                return this.fileableField;

+            }

+            set {

+                this.fileableField = value;

+                this.RaisePropertyChanged("fileable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=10)]

+        public bool queryable {

+            get {

+                return this.queryableField;

+            }

+            set {

+                this.queryableField = value;

+                this.RaisePropertyChanged("queryable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=11)]

+        public bool fulltextIndexed {

+            get {

+                return this.fulltextIndexedField;

+            }

+            set {

+                this.fulltextIndexedField = value;

+                this.RaisePropertyChanged("fulltextIndexed");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=12)]

+        public bool includedInSupertypeQuery {

+            get {

+                return this.includedInSupertypeQueryField;

+            }

+            set {

+                this.includedInSupertypeQueryField = value;

+                this.RaisePropertyChanged("includedInSupertypeQuery");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=13)]

+        public bool controllablePolicy {

+            get {

+                return this.controllablePolicyField;

+            }

+            set {

+                this.controllablePolicyField = value;

+                this.RaisePropertyChanged("controllablePolicy");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=14)]

+        public bool controllableACL {

+            get {

+                return this.controllableACLField;

+            }

+            set {

+                this.controllableACLField = value;

+                this.RaisePropertyChanged("controllableACL");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("propertyBooleanDefinition", typeof(cmisPropertyBooleanDefinitionType), Order=15)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyDateTimeDefinition", typeof(cmisPropertyDateTimeDefinitionType), Order=15)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyDecimalDefinition", typeof(cmisPropertyDecimalDefinitionType), Order=15)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyHtmlDefinition", typeof(cmisPropertyHtmlDefinitionType), Order=15)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyIdDefinition", typeof(cmisPropertyIdDefinitionType), Order=15)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyIntegerDefinition", typeof(cmisPropertyIntegerDefinitionType), Order=15)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyStringDefinition", typeof(cmisPropertyStringDefinitionType), Order=15)]

+        [System.Xml.Serialization.XmlElementAttribute("propertyUriDefinition", typeof(cmisPropertyUriDefinitionType), Order=15)]

+        public cmisPropertyDefinitionType[] Items {

+            get {

+                return this.itemsField;

+            }

+            set {

+                this.itemsField = value;

+                this.RaisePropertyChanged("Items");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=16)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyBooleanDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyBoolean defaultValueField;

+        

+        private cmisChoiceBoolean[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyBoolean defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceBoolean[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceBoolean : cmisChoice {

+        

+        private bool[] valueField;

+        

+        private cmisChoiceBoolean[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public bool[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceBoolean[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceUri))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceString))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceHtml))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceDecimal))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceDateTime))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceInteger))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceId))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisChoiceBoolean))]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoice : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string displayNameField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAttributeAttribute()]

+        public string displayName {

+            get {

+                return this.displayNameField;

+            }

+            set {

+                this.displayNameField = value;

+                this.RaisePropertyChanged("displayName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceUri : cmisChoice {

+        

+        private string[] valueField;

+        

+        private cmisChoiceUri[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", DataType="anyURI", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceUri[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceString : cmisChoice {

+        

+        private string[] valueField;

+        

+        private cmisChoiceString[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceString[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceHtml : cmisChoice {

+        

+        private string[] valueField;

+        

+        private cmisChoiceHtml[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceHtml[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceDecimal : cmisChoice {

+        

+        private decimal[] valueField;

+        

+        private cmisChoiceDecimal[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public decimal[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceDecimal[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceDateTime : cmisChoice {

+        

+        private System.DateTime[] valueField;

+        

+        private cmisChoiceDateTime[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public System.DateTime[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceDateTime[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceInteger : cmisChoice {

+        

+        private string[] valueField;

+        

+        private cmisChoiceInteger[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", DataType="integer", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceInteger[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisChoiceId : cmisChoice {

+        

+        private string[] valueField;

+        

+        private cmisChoiceId[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("value", Order=0)]

+        public string[] value {

+            get {

+                return this.valueField;

+            }

+            set {

+                this.valueField = value;

+                this.RaisePropertyChanged("value");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceId[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyUriDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyStringDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyHtmlDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyDecimalDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyDateTimeDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyIntegerDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyIdDefinitionType))]

+    [System.Xml.Serialization.XmlIncludeAttribute(typeof(cmisPropertyBooleanDefinitionType))]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyDefinitionType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private string idField;

+        

+        private string localNameField;

+        

+        private string localNamespaceField;

+        

+        private string displayNameField;

+        

+        private string queryNameField;

+        

+        private string descriptionField;

+        

+        private enumPropertyType propertyTypeField;

+        

+        private enumCardinality cardinalityField;

+        

+        private enumUpdatability updatabilityField;

+        

+        private bool inheritedField;

+        

+        private bool inheritedFieldSpecified;

+        

+        private bool requiredField;

+        

+        private bool queryableField;

+        

+        private bool orderableField;

+        

+        private bool openChoiceField;

+        

+        private bool openChoiceFieldSpecified;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public string id {

+            get {

+                return this.idField;

+            }

+            set {

+                this.idField = value;

+                this.RaisePropertyChanged("id");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public string localName {

+            get {

+                return this.localNameField;

+            }

+            set {

+                this.localNameField = value;

+                this.RaisePropertyChanged("localName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="anyURI", Order=2)]

+        public string localNamespace {

+            get {

+                return this.localNamespaceField;

+            }

+            set {

+                this.localNamespaceField = value;

+                this.RaisePropertyChanged("localNamespace");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public string displayName {

+            get {

+                return this.displayNameField;

+            }

+            set {

+                this.displayNameField = value;

+                this.RaisePropertyChanged("displayName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=4)]

+        public string queryName {

+            get {

+                return this.queryNameField;

+            }

+            set {

+                this.queryNameField = value;

+                this.RaisePropertyChanged("queryName");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=5)]

+        public string description {

+            get {

+                return this.descriptionField;

+            }

+            set {

+                this.descriptionField = value;

+                this.RaisePropertyChanged("description");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=6)]

+        public enumPropertyType propertyType {

+            get {

+                return this.propertyTypeField;

+            }

+            set {

+                this.propertyTypeField = value;

+                this.RaisePropertyChanged("propertyType");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=7)]

+        public enumCardinality cardinality {

+            get {

+                return this.cardinalityField;

+            }

+            set {

+                this.cardinalityField = value;

+                this.RaisePropertyChanged("cardinality");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=8)]

+        public enumUpdatability updatability {

+            get {

+                return this.updatabilityField;

+            }

+            set {

+                this.updatabilityField = value;

+                this.RaisePropertyChanged("updatability");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=9)]

+        public bool inherited {

+            get {

+                return this.inheritedField;

+            }

+            set {

+                this.inheritedField = value;

+                this.RaisePropertyChanged("inherited");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool inheritedSpecified {

+            get {

+                return this.inheritedFieldSpecified;

+            }

+            set {

+                this.inheritedFieldSpecified = value;

+                this.RaisePropertyChanged("inheritedSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=10)]

+        public bool required {

+            get {

+                return this.requiredField;

+            }

+            set {

+                this.requiredField = value;

+                this.RaisePropertyChanged("required");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=11)]

+        public bool queryable {

+            get {

+                return this.queryableField;

+            }

+            set {

+                this.queryableField = value;

+                this.RaisePropertyChanged("queryable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=12)]

+        public bool orderable {

+            get {

+                return this.orderableField;

+            }

+            set {

+                this.orderableField = value;

+                this.RaisePropertyChanged("orderable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=13)]

+        public bool openChoice {

+            get {

+                return this.openChoiceField;

+            }

+            set {

+                this.openChoiceField = value;

+                this.RaisePropertyChanged("openChoice");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool openChoiceSpecified {

+            get {

+                return this.openChoiceFieldSpecified;

+            }

+            set {

+                this.openChoiceFieldSpecified = value;

+                this.RaisePropertyChanged("openChoiceSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=14)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumPropertyType {

+        

+        /// <remarks/>

+        boolean,

+        

+        /// <remarks/>

+        id,

+        

+        /// <remarks/>

+        integer,

+        

+        /// <remarks/>

+        datetime,

+        

+        /// <remarks/>

+        @decimal,

+        

+        /// <remarks/>

+        html,

+        

+        /// <remarks/>

+        @string,

+        

+        /// <remarks/>

+        uri,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumCardinality {

+        

+        /// <remarks/>

+        single,

+        

+        /// <remarks/>

+        multi,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumUpdatability {

+        

+        /// <remarks/>

+        @readonly,

+        

+        /// <remarks/>

+        readwrite,

+        

+        /// <remarks/>

+        whencheckedout,

+        

+        /// <remarks/>

+        oncreate,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyUriDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyUri defaultValueField;

+        

+        private cmisChoiceUri[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyUri defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceUri[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyStringDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyString defaultValueField;

+        

+        private string maxLengthField;

+        

+        private cmisChoiceString[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyString defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=1)]

+        public string maxLength {

+            get {

+                return this.maxLengthField;

+            }

+            set {

+                this.maxLengthField = value;

+                this.RaisePropertyChanged("maxLength");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=2)]

+        public cmisChoiceString[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyHtmlDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyHtml defaultValueField;

+        

+        private cmisChoiceHtml[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyHtml defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceHtml[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyDecimalDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyDecimal defaultValueField;

+        

+        private decimal maxValueField;

+        

+        private bool maxValueFieldSpecified;

+        

+        private decimal minValueField;

+        

+        private bool minValueFieldSpecified;

+        

+        private enumDecimalPrecision precisionField;

+        

+        private bool precisionFieldSpecified;

+        

+        private cmisChoiceDecimal[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyDecimal defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public decimal maxValue {

+            get {

+                return this.maxValueField;

+            }

+            set {

+                this.maxValueField = value;

+                this.RaisePropertyChanged("maxValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool maxValueSpecified {

+            get {

+                return this.maxValueFieldSpecified;

+            }

+            set {

+                this.maxValueFieldSpecified = value;

+                this.RaisePropertyChanged("maxValueSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=2)]

+        public decimal minValue {

+            get {

+                return this.minValueField;

+            }

+            set {

+                this.minValueField = value;

+                this.RaisePropertyChanged("minValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool minValueSpecified {

+            get {

+                return this.minValueFieldSpecified;

+            }

+            set {

+                this.minValueFieldSpecified = value;

+                this.RaisePropertyChanged("minValueSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=3)]

+        public enumDecimalPrecision precision {

+            get {

+                return this.precisionField;

+            }

+            set {

+                this.precisionField = value;

+                this.RaisePropertyChanged("precision");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool precisionSpecified {

+            get {

+                return this.precisionFieldSpecified;

+            }

+            set {

+                this.precisionFieldSpecified = value;

+                this.RaisePropertyChanged("precisionSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=4)]

+        public cmisChoiceDecimal[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumDecimalPrecision {

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("32")]

+        Item32,

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlEnumAttribute("64")]

+        Item64,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyDateTimeDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyDateTime defaultValueField;

+        

+        private enumDateTimeResolution resolutionField;

+        

+        private bool resolutionFieldSpecified;

+        

+        private cmisChoiceDateTime[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyDateTime defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public enumDateTimeResolution resolution {

+            get {

+                return this.resolutionField;

+            }

+            set {

+                this.resolutionField = value;

+                this.RaisePropertyChanged("resolution");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool resolutionSpecified {

+            get {

+                return this.resolutionFieldSpecified;

+            }

+            set {

+                this.resolutionFieldSpecified = value;

+                this.RaisePropertyChanged("resolutionSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=2)]

+        public cmisChoiceDateTime[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumDateTimeResolution {

+        

+        /// <remarks/>

+        year,

+        

+        /// <remarks/>

+        date,

+        

+        /// <remarks/>

+        time,

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyIntegerDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyInteger defaultValueField;

+        

+        private string maxValueField;

+        

+        private string minValueField;

+        

+        private cmisChoiceInteger[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyInteger defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=1)]

+        public string maxValue {

+            get {

+                return this.maxValueField;

+            }

+            set {

+                this.maxValueField = value;

+                this.RaisePropertyChanged("maxValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=2)]

+        public string minValue {

+            get {

+                return this.minValueField;

+            }

+            set {

+                this.minValueField = value;

+                this.RaisePropertyChanged("minValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=3)]

+        public cmisChoiceInteger[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisPropertyIdDefinitionType : cmisPropertyDefinitionType {

+        

+        private cmisPropertyId defaultValueField;

+        

+        private cmisChoiceId[] choiceField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisPropertyId defaultValue {

+            get {

+                return this.defaultValueField;

+            }

+            set {

+                this.defaultValueField = value;

+                this.RaisePropertyChanged("defaultValue");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("choice", Order=1)]

+        public cmisChoiceId[] choice {

+            get {

+                return this.choiceField;

+            }

+            set {

+                this.choiceField = value;

+                this.RaisePropertyChanged("choice");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisTypePolicyDefinitionType : cmisTypeDefinitionType {

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisTypeRelationshipDefinitionType : cmisTypeDefinitionType {

+        

+        private string[] allowedSourceTypesField;

+        

+        private string[] allowedTargetTypesField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("allowedSourceTypes", Order=0)]

+        public string[] allowedSourceTypes {

+            get {

+                return this.allowedSourceTypesField;

+            }

+            set {

+                this.allowedSourceTypesField = value;

+                this.RaisePropertyChanged("allowedSourceTypes");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("allowedTargetTypes", Order=1)]

+        public string[] allowedTargetTypes {

+            get {

+                return this.allowedTargetTypesField;

+            }

+            set {

+                this.allowedTargetTypesField = value;

+                this.RaisePropertyChanged("allowedTargetTypes");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisTypeFolderDefinitionType : cmisTypeDefinitionType {

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public partial class cmisTypeDocumentDefinitionType : cmisTypeDefinitionType {

+        

+        private bool versionableField;

+        

+        private enumContentStreamAllowed contentStreamAllowedField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public bool versionable {

+            get {

+                return this.versionableField;

+            }

+            set {

+                this.versionableField = value;

+                this.RaisePropertyChanged("versionable");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public enumContentStreamAllowed contentStreamAllowed {

+            get {

+                return this.contentStreamAllowedField;

+            }

+            set {

+                this.contentStreamAllowedField = value;

+                this.RaisePropertyChanged("contentStreamAllowed");

+            }

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/core/200908/")]

+    public enum enumContentStreamAllowed {

+        

+        /// <remarks/>

+        notallowed,

+        

+        /// <remarks/>

+        allowed,

+        

+        /// <remarks/>

+        required,

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getTypeChildren", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getTypeChildrenRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string typeId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePropertyDefinitions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string maxItems;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string skipCount;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getTypeChildrenRequest() {

+        }

+        

+        public getTypeChildrenRequest(string repositoryId, string typeId, System.Nullable<bool> includePropertyDefinitions, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.typeId = typeId;

+            this.includePropertyDefinitions = includePropertyDefinitions;

+            this.maxItems = maxItems;

+            this.skipCount = skipCount;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getTypeChildrenResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getTypeChildrenResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType types;

+        

+        public getTypeChildrenResponse() {

+        }

+        

+        public getTypeChildrenResponse(DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType types) {

+            this.types = types;

+        }

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisTypeContainer : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisTypeDefinitionType typeField;

+        

+        private cmisTypeContainer[] childrenField;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisTypeDefinitionType type {

+            get {

+                return this.typeField;

+            }

+            set {

+                this.typeField = value;

+                this.RaisePropertyChanged("type");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute("children", Order=1)]

+        public cmisTypeContainer[] children {

+            get {

+                return this.childrenField;

+            }

+            set {

+                this.childrenField = value;

+                this.RaisePropertyChanged("children");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getTypeDescendants", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getTypeDescendantsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string typeId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer", IsNullable=true)]

+        public string depth;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePropertyDefinitions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getTypeDescendantsRequest() {

+        }

+        

+        public getTypeDescendantsRequest(string repositoryId, string typeId, string depth, System.Nullable<bool> includePropertyDefinitions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.typeId = typeId;

+            this.depth = depth;

+            this.includePropertyDefinitions = includePropertyDefinitions;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getTypeDescendantsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getTypeDescendantsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("types")]

+        public cmisTypeContainer[] types;

+        

+        public getTypeDescendantsResponse() {

+        }

+        

+        public getTypeDescendantsResponse(cmisTypeContainer[] types) {

+            this.types = types;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getTypeDefinition", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getTypeDefinitionRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string typeId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getTypeDefinitionRequest() {

+        }

+        

+        public getTypeDefinitionRequest(string repositoryId, string typeId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.typeId = typeId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getTypeDefinitionResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getTypeDefinitionResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType type;

+        

+        public getTypeDefinitionResponse() {

+        }

+        

+        public getTypeDefinitionResponse(DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType type) {

+            this.type = type;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface RepositoryServicePortChannel : DotCMIS.CMISWebServicesReference.RepositoryServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class RepositoryServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.RepositoryServicePort>, DotCMIS.CMISWebServicesReference.RepositoryServicePort {

+        

+        public RepositoryServicePortClient() {

+        }

+        

+        public RepositoryServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public RepositoryServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public RepositoryServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public RepositoryServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getRepositoriesResponse DotCMIS.CMISWebServicesReference.RepositoryServicePort.getRepositories(DotCMIS.CMISWebServicesReference.getRepositoriesRequest request) {

+            return base.Channel.getRepositories(request);

+        }

+        

+        public cmisRepositoryEntryType[] getRepositories(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getRepositoriesRequest inValue = new DotCMIS.CMISWebServicesReference.getRepositoriesRequest();

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getRepositoriesResponse retVal = ((DotCMIS.CMISWebServicesReference.RepositoryServicePort)(this)).getRepositories(inValue);

+            return retVal.repositories;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getRepositoryInfoResponse DotCMIS.CMISWebServicesReference.RepositoryServicePort.getRepositoryInfo(DotCMIS.CMISWebServicesReference.getRepositoryInfoRequest request) {

+            return base.Channel.getRepositoryInfo(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisRepositoryInfoType getRepositoryInfo(string repositoryId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getRepositoryInfoRequest inValue = new DotCMIS.CMISWebServicesReference.getRepositoryInfoRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getRepositoryInfoResponse retVal = ((DotCMIS.CMISWebServicesReference.RepositoryServicePort)(this)).getRepositoryInfo(inValue);

+            return retVal.repositoryInfo;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getTypeChildrenResponse DotCMIS.CMISWebServicesReference.RepositoryServicePort.getTypeChildren(DotCMIS.CMISWebServicesReference.getTypeChildrenRequest request) {

+            return base.Channel.getTypeChildren(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisTypeDefinitionListType getTypeChildren(string repositoryId, string typeId, System.Nullable<bool> includePropertyDefinitions, string maxItems, string skipCount, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getTypeChildrenRequest inValue = new DotCMIS.CMISWebServicesReference.getTypeChildrenRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.typeId = typeId;

+            inValue.includePropertyDefinitions = includePropertyDefinitions;

+            inValue.maxItems = maxItems;

+            inValue.skipCount = skipCount;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getTypeChildrenResponse retVal = ((DotCMIS.CMISWebServicesReference.RepositoryServicePort)(this)).getTypeChildren(inValue);

+            return retVal.types;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getTypeDescendantsResponse DotCMIS.CMISWebServicesReference.RepositoryServicePort.getTypeDescendants(DotCMIS.CMISWebServicesReference.getTypeDescendantsRequest request) {

+            return base.Channel.getTypeDescendants(request);

+        }

+        

+        public cmisTypeContainer[] getTypeDescendants(string repositoryId, string typeId, string depth, System.Nullable<bool> includePropertyDefinitions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getTypeDescendantsRequest inValue = new DotCMIS.CMISWebServicesReference.getTypeDescendantsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.typeId = typeId;

+            inValue.depth = depth;

+            inValue.includePropertyDefinitions = includePropertyDefinitions;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getTypeDescendantsResponse retVal = ((DotCMIS.CMISWebServicesReference.RepositoryServicePort)(this)).getTypeDescendants(inValue);

+            return retVal.types;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getTypeDefinitionResponse DotCMIS.CMISWebServicesReference.RepositoryServicePort.getTypeDefinition(DotCMIS.CMISWebServicesReference.getTypeDefinitionRequest request) {

+            return base.Channel.getTypeDefinition(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisTypeDefinitionType getTypeDefinition(string repositoryId, string typeId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getTypeDefinitionRequest inValue = new DotCMIS.CMISWebServicesReference.getTypeDefinitionRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.typeId = typeId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getTypeDefinitionResponse retVal = ((DotCMIS.CMISWebServicesReference.RepositoryServicePort)(this)).getTypeDefinition(inValue);

+            return retVal.type;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.VersioningServicePort")]

+    internal interface VersioningServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message checkOutRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.checkOutResponse checkOut(DotCMIS.CMISWebServicesReference.checkOutRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message cancelCheckOutRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.cancelCheckOutResponse cancelCheckOut(DotCMIS.CMISWebServicesReference.cancelCheckOutRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message checkInRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.checkInResponse checkIn(DotCMIS.CMISWebServicesReference.checkInRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getObjectOfLatestVersionRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getObjectOfLatestVersionResponse getObjectOfLatestVersion(DotCMIS.CMISWebServicesReference.getObjectOfLatestVersionRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getPropertiesOfLatestVersionRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getPropertiesOfLatestVersionResponse getPropertiesOfLatestVersion(DotCMIS.CMISWebServicesReference.getPropertiesOfLatestVersionRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getAllVersionsRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getAllVersionsResponse getAllVersions(DotCMIS.CMISWebServicesReference.getAllVersionsRequest request);

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="checkOut", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class checkOutRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public checkOutRequest() {

+        }

+        

+        public checkOutRequest(string repositoryId, string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="checkOutResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class checkOutResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public bool contentCopied;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public checkOutResponse() {

+        }

+        

+        public checkOutResponse(string objectId, bool contentCopied, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.contentCopied = contentCopied;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="cancelCheckOut", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class cancelCheckOutRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public cancelCheckOutRequest() {

+        }

+        

+        public cancelCheckOutRequest(string repositoryId, string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="cancelCheckOutResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class cancelCheckOutResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public cancelCheckOutResponse() {

+        }

+        

+        public cancelCheckOutResponse(DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="checkIn", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class checkInRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> major;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string checkinComment;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute("policies", IsNullable=true)]

+        public string[] policies;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=9)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public checkInRequest() {

+        }

+        

+        public checkInRequest(string repositoryId, string objectId, System.Nullable<bool> major, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream, string checkinComment, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.major = major;

+            this.properties = properties;

+            this.contentStream = contentStream;

+            this.checkinComment = checkinComment;

+            this.policies = policies;

+            this.addACEs = addACEs;

+            this.removeACEs = removeACEs;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="checkInResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class checkInResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public checkInResponse() {

+        }

+        

+        public checkInResponse(string objectId, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.objectId = objectId;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectOfLatestVersion", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectOfLatestVersionRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public bool major;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumIncludeRelationships> includeRelationships;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=6)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string renditionFilter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=7)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includePolicyIds;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=8)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeACL;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=9)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getObjectOfLatestVersionRequest() {

+        }

+        

+        public getObjectOfLatestVersionRequest(string repositoryId, string objectId, bool major, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.major = major;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.includePolicyIds = includePolicyIds;

+            this.includeACL = includeACL;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getObjectOfLatestVersionResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getObjectOfLatestVersionResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisObjectType @object;

+        

+        public getObjectOfLatestVersionResponse() {

+        }

+        

+        public getObjectOfLatestVersionResponse(DotCMIS.CMISWebServicesReference.cmisObjectType @object) {

+            this.@object = @object;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getPropertiesOfLatestVersion", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getPropertiesOfLatestVersionRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public bool major;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getPropertiesOfLatestVersionRequest() {

+        }

+        

+        public getPropertiesOfLatestVersionRequest(string repositoryId, string objectId, bool major, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.major = major;

+            this.filter = filter;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getPropertiesOfLatestVersionResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getPropertiesOfLatestVersionResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType properties;

+        

+        public getPropertiesOfLatestVersionResponse() {

+        }

+        

+        public getPropertiesOfLatestVersionResponse(DotCMIS.CMISWebServicesReference.cmisPropertiesType properties) {

+            this.properties = properties;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getAllVersions", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getAllVersionsRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public string filter;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> includeAllowableActions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getAllVersionsRequest() {

+        }

+        

+        public getAllVersionsRequest(string repositoryId, string objectId, string filter, System.Nullable<bool> includeAllowableActions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.filter = filter;

+            this.includeAllowableActions = includeAllowableActions;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getAllVersionsResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getAllVersionsResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        [System.Xml.Serialization.XmlElementAttribute("objects")]

+        public cmisObjectType[] objects;

+        

+        public getAllVersionsResponse() {

+        }

+        

+        public getAllVersionsResponse(cmisObjectType[] objects) {

+            this.objects = objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface VersioningServicePortChannel : DotCMIS.CMISWebServicesReference.VersioningServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class VersioningServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.VersioningServicePort>, DotCMIS.CMISWebServicesReference.VersioningServicePort {

+        

+        public VersioningServicePortClient() {

+        }

+        

+        public VersioningServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public VersioningServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public VersioningServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public VersioningServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.checkOutResponse DotCMIS.CMISWebServicesReference.VersioningServicePort.checkOut(DotCMIS.CMISWebServicesReference.checkOutRequest request) {

+            return base.Channel.checkOut(request);

+        }

+        

+        public bool checkOut(string repositoryId, ref string objectId, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.checkOutRequest inValue = new DotCMIS.CMISWebServicesReference.checkOutRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.checkOutResponse retVal = ((DotCMIS.CMISWebServicesReference.VersioningServicePort)(this)).checkOut(inValue);

+            objectId = retVal.objectId;

+            extension = retVal.extension;

+            return retVal.contentCopied;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.cancelCheckOutResponse DotCMIS.CMISWebServicesReference.VersioningServicePort.cancelCheckOut(DotCMIS.CMISWebServicesReference.cancelCheckOutRequest request) {

+            return base.Channel.cancelCheckOut(request);

+        }

+        

+        public void cancelCheckOut(string repositoryId, string objectId, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.cancelCheckOutRequest inValue = new DotCMIS.CMISWebServicesReference.cancelCheckOutRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.cancelCheckOutResponse retVal = ((DotCMIS.CMISWebServicesReference.VersioningServicePort)(this)).cancelCheckOut(inValue);

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.checkInResponse DotCMIS.CMISWebServicesReference.VersioningServicePort.checkIn(DotCMIS.CMISWebServicesReference.checkInRequest request) {

+            return base.Channel.checkIn(request);

+        }

+        

+        public void checkIn(string repositoryId, ref string objectId, System.Nullable<bool> major, DotCMIS.CMISWebServicesReference.cmisPropertiesType properties, DotCMIS.CMISWebServicesReference.cmisContentStreamType contentStream, string checkinComment, string[] policies, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, ref DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.checkInRequest inValue = new DotCMIS.CMISWebServicesReference.checkInRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.major = major;

+            inValue.properties = properties;

+            inValue.contentStream = contentStream;

+            inValue.checkinComment = checkinComment;

+            inValue.policies = policies;

+            inValue.addACEs = addACEs;

+            inValue.removeACEs = removeACEs;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.checkInResponse retVal = ((DotCMIS.CMISWebServicesReference.VersioningServicePort)(this)).checkIn(inValue);

+            objectId = retVal.objectId;

+            extension = retVal.extension;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getObjectOfLatestVersionResponse DotCMIS.CMISWebServicesReference.VersioningServicePort.getObjectOfLatestVersion(DotCMIS.CMISWebServicesReference.getObjectOfLatestVersionRequest request) {

+            return base.Channel.getObjectOfLatestVersion(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisObjectType getObjectOfLatestVersion(string repositoryId, string objectId, bool major, string filter, System.Nullable<bool> includeAllowableActions, System.Nullable<enumIncludeRelationships> includeRelationships, string renditionFilter, System.Nullable<bool> includePolicyIds, System.Nullable<bool> includeACL, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getObjectOfLatestVersionRequest inValue = new DotCMIS.CMISWebServicesReference.getObjectOfLatestVersionRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.major = major;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.includeRelationships = includeRelationships;

+            inValue.renditionFilter = renditionFilter;

+            inValue.includePolicyIds = includePolicyIds;

+            inValue.includeACL = includeACL;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getObjectOfLatestVersionResponse retVal = ((DotCMIS.CMISWebServicesReference.VersioningServicePort)(this)).getObjectOfLatestVersion(inValue);

+            return retVal.@object;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getPropertiesOfLatestVersionResponse DotCMIS.CMISWebServicesReference.VersioningServicePort.getPropertiesOfLatestVersion(DotCMIS.CMISWebServicesReference.getPropertiesOfLatestVersionRequest request) {

+            return base.Channel.getPropertiesOfLatestVersion(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisPropertiesType getPropertiesOfLatestVersion(string repositoryId, string objectId, bool major, string filter, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getPropertiesOfLatestVersionRequest inValue = new DotCMIS.CMISWebServicesReference.getPropertiesOfLatestVersionRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.major = major;

+            inValue.filter = filter;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getPropertiesOfLatestVersionResponse retVal = ((DotCMIS.CMISWebServicesReference.VersioningServicePort)(this)).getPropertiesOfLatestVersion(inValue);

+            return retVal.properties;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getAllVersionsResponse DotCMIS.CMISWebServicesReference.VersioningServicePort.getAllVersions(DotCMIS.CMISWebServicesReference.getAllVersionsRequest request) {

+            return base.Channel.getAllVersions(request);

+        }

+        

+        public cmisObjectType[] getAllVersions(string repositoryId, string objectId, string filter, System.Nullable<bool> includeAllowableActions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getAllVersionsRequest inValue = new DotCMIS.CMISWebServicesReference.getAllVersionsRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.filter = filter;

+            inValue.includeAllowableActions = includeAllowableActions;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getAllVersionsResponse retVal = ((DotCMIS.CMISWebServicesReference.VersioningServicePort)(this)).getAllVersions(inValue);

+            return retVal.objects;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/ws/200908/", ConfigurationName="CMISWebServicesReference.ACLServicePort")]

+    internal interface ACLServicePort {

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message getACLRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.getACLResponse getACL(DotCMIS.CMISWebServicesReference.getACLRequest request);

+        

+        // CODEGEN: Generating message contract since the wrapper namespace (http://docs.oasis-open.org/ns/cmis/messaging/200908/) of message applyACLRequest does not match the default value (http://docs.oasis-open.org/ns/cmis/ws/200908/)

+        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]

+        [System.ServiceModel.FaultContractAttribute(typeof(DotCMIS.CMISWebServicesReference.cmisFaultType), Action="", Name="cmisFault", Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+        [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]

+        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(cmisProperty))]

+        DotCMIS.CMISWebServicesReference.applyACLResponse applyACL(DotCMIS.CMISWebServicesReference.applyACLRequest request);

+    }

+    

+    /// <remarks/>

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]

+    [System.SerializableAttribute()]

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.ComponentModel.DesignerCategoryAttribute("code")]

+    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/")]

+    public partial class cmisACLType : object, System.ComponentModel.INotifyPropertyChanged {

+        

+        private cmisAccessControlListType aCLField;

+        

+        private bool exactField;

+        

+        private bool exactFieldSpecified;

+        

+        private System.Xml.XmlElement[] anyField;

+        

+        private System.Xml.XmlAttribute[] anyAttrField;

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=0)]

+        public cmisAccessControlListType ACL {

+            get {

+                return this.aCLField;

+            }

+            set {

+                this.aCLField = value;

+                this.RaisePropertyChanged("ACL");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlElementAttribute(Order=1)]

+        public bool exact {

+            get {

+                return this.exactField;

+            }

+            set {

+                this.exactField = value;

+                this.RaisePropertyChanged("exact");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlIgnoreAttribute()]

+        public bool exactSpecified {

+            get {

+                return this.exactFieldSpecified;

+            }

+            set {

+                this.exactFieldSpecified = value;

+                this.RaisePropertyChanged("exactSpecified");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyElementAttribute(Order=2)]

+        public System.Xml.XmlElement[] Any {

+            get {

+                return this.anyField;

+            }

+            set {

+                this.anyField = value;

+                this.RaisePropertyChanged("Any");

+            }

+        }

+        

+        /// <remarks/>

+        [System.Xml.Serialization.XmlAnyAttributeAttribute()]

+        public System.Xml.XmlAttribute[] AnyAttr {

+            get {

+                return this.anyAttrField;

+            }

+            set {

+                this.anyAttrField = value;

+                this.RaisePropertyChanged("AnyAttr");

+            }

+        }

+        

+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

+        

+        protected void RaisePropertyChanged(string propertyName) {

+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;

+            if ((propertyChanged != null)) {

+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

+            }

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getACL", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getACLRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<bool> onlyBasicPermissions;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public getACLRequest() {

+        }

+        

+        public getACLRequest(string repositoryId, string objectId, System.Nullable<bool> onlyBasicPermissions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.onlyBasicPermissions = onlyBasicPermissions;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="getACLResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class getACLResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisACLType ACL;

+        

+        public getACLResponse() {

+        }

+        

+        public getACLResponse(DotCMIS.CMISWebServicesReference.cmisACLType ACL) {

+            this.ACL = ACL;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="applyACL", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class applyACLRequest {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public string repositoryId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=1)]

+        public string objectId;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=2)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=3)]

+        public DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=4)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public System.Nullable<enumACLPropagation> ACLPropagation;

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=5)]

+        [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]

+        public DotCMIS.CMISWebServicesReference.cmisExtensionType extension;

+        

+        public applyACLRequest() {

+        }

+        

+        public applyACLRequest(string repositoryId, string objectId, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, System.Nullable<enumACLPropagation> ACLPropagation, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            this.repositoryId = repositoryId;

+            this.objectId = objectId;

+            this.addACEs = addACEs;

+            this.removeACEs = removeACEs;

+            this.ACLPropagation = ACLPropagation;

+            this.extension = extension;

+        }

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+    [System.ServiceModel.MessageContractAttribute(WrapperName="applyACLResponse", WrapperNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", IsWrapped=true)]

+    internal partial class applyACLResponse {

+        

+        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/", Order=0)]

+        public DotCMIS.CMISWebServicesReference.cmisACLType ACL;

+        

+        public applyACLResponse() {

+        }

+        

+        public applyACLResponse(DotCMIS.CMISWebServicesReference.cmisACLType ACL) {

+            this.ACL = ACL;

+        }

+    }

+    

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal interface ACLServicePortChannel : DotCMIS.CMISWebServicesReference.ACLServicePort, System.ServiceModel.IClientChannel {

+    }

+    

+    [System.Diagnostics.DebuggerStepThroughAttribute()]

+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

+    internal partial class ACLServicePortClient : System.ServiceModel.ClientBase<DotCMIS.CMISWebServicesReference.ACLServicePort>, DotCMIS.CMISWebServicesReference.ACLServicePort {

+        

+        public ACLServicePortClient() {

+        }

+        

+        public ACLServicePortClient(string endpointConfigurationName) : 

+                base(endpointConfigurationName) {

+        }

+        

+        public ACLServicePortClient(string endpointConfigurationName, string remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public ACLServicePortClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(endpointConfigurationName, remoteAddress) {

+        }

+        

+        public ACLServicePortClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 

+                base(binding, remoteAddress) {

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.getACLResponse DotCMIS.CMISWebServicesReference.ACLServicePort.getACL(DotCMIS.CMISWebServicesReference.getACLRequest request) {

+            return base.Channel.getACL(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisACLType getACL(string repositoryId, string objectId, System.Nullable<bool> onlyBasicPermissions, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.getACLRequest inValue = new DotCMIS.CMISWebServicesReference.getACLRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.onlyBasicPermissions = onlyBasicPermissions;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.getACLResponse retVal = ((DotCMIS.CMISWebServicesReference.ACLServicePort)(this)).getACL(inValue);

+            return retVal.ACL;

+        }

+        

+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]

+        DotCMIS.CMISWebServicesReference.applyACLResponse DotCMIS.CMISWebServicesReference.ACLServicePort.applyACL(DotCMIS.CMISWebServicesReference.applyACLRequest request) {

+            return base.Channel.applyACL(request);

+        }

+        

+        public DotCMIS.CMISWebServicesReference.cmisACLType applyACL(string repositoryId, string objectId, DotCMIS.CMISWebServicesReference.cmisAccessControlListType addACEs, DotCMIS.CMISWebServicesReference.cmisAccessControlListType removeACEs, System.Nullable<enumACLPropagation> ACLPropagation, DotCMIS.CMISWebServicesReference.cmisExtensionType extension) {

+            DotCMIS.CMISWebServicesReference.applyACLRequest inValue = new DotCMIS.CMISWebServicesReference.applyACLRequest();

+            inValue.repositoryId = repositoryId;

+            inValue.objectId = objectId;

+            inValue.addACEs = addACEs;

+            inValue.removeACEs = removeACEs;

+            inValue.ACLPropagation = ACLPropagation;

+            inValue.extension = extension;

+            DotCMIS.CMISWebServicesReference.applyACLResponse retVal = ((DotCMIS.CMISWebServicesReference.ACLServicePort)(this)).applyACL(inValue);

+            return retVal.ACL;

+        }

+    }

+}

diff --git a/DotCMIS/Service References/CMISWebServicesReference/Reference.svcmap b/DotCMIS/Service References/CMISWebServicesReference/Reference.svcmap
new file mode 100644
index 0000000..48d6a68
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/Reference.svcmap
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>

+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="3d5abe42-7fbf-4694-8527-bfbf3463347e" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">

+  <ClientOptions>

+    <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>

+    <EnableDataBinding>true</EnableDataBinding>

+    <ExcludedTypes />

+    <ImportXmlTypes>false</ImportXmlTypes>

+    <GenerateInternalTypes>true</GenerateInternalTypes>

+    <GenerateMessageContracts>false</GenerateMessageContracts>

+    <NamespaceMappings />

+    <CollectionMappings />

+    <GenerateSerializableTypes>true</GenerateSerializableTypes>

+    <Serializer>Auto</Serializer>

+    <UseSerializerForFaults>true</UseSerializerForFaults>

+    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>

+    <ReferencedAssemblies />

+    <ReferencedDataContractTypes />

+    <ServiceContractMappings />

+  </ClientOptions>

+  <MetadataSources>

+    <MetadataSource Address="C:\projects\opencmis\DotCMIS\DotCMIS\wsdl\CMISWS-Service.wsdl" Protocol="file" SourceId="1" />

+  </MetadataSources>

+  <Metadata>

+    <MetadataFile FileName="CMIS-Messaging.xsd" MetadataType="Schema" ID="a67cdce6-4ed5-4a16-9a77-3681a58e7436" SourceId="1" SourceUrl="file:///C:/projects/opencmis/DotCMIS/DotCMIS/wsdl/CMIS-Messaging.xsd" />

+    <MetadataFile FileName="CMIS-Core.xsd" MetadataType="Schema" ID="308bb947-3023-485c-aa3d-1b44b4f62b3e" SourceId="1" SourceUrl="file:///C:/projects/opencmis/DotCMIS/DotCMIS/wsdl/CMIS-Core.xsd" />

+    <MetadataFile FileName="CMISWebServices.wsdl" MetadataType="Wsdl" ID="51836210-8920-4bad-af93-ce566d98ae3a" SourceId="1" SourceUrl="file:///C:/projects/opencmis/DotCMIS/DotCMIS/wsdl/CMISWS-Service.wsdl" />

+  </Metadata>

+  <Extensions>

+    <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />

+    <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />

+  </Extensions>

+</ReferenceGroup>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/configuration.svcinfo b/DotCMIS/Service References/CMISWebServicesReference/configuration.svcinfo
new file mode 100644
index 0000000..854a2e8
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/configuration.svcinfo
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>

+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">

+  <behaviors />

+  <bindings>

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;DiscoveryServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="DiscoveryServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;MultiFilingServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="MultiFilingServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;NavigationServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="NavigationServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;ObjectServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="ObjectServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;PolicyServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="PolicyServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;RelationshipServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="RelationshipServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;RepositoryServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="RepositoryServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;VersioningServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="VersioningServicePortBinding" />

+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;ACLServicePortBinding&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="ACLServicePortBinding" />

+  </bindings>

+  <endpoints>

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/DiscoveryService.DiscoveryServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;DiscoveryServicePortBinding&quot; contract=&quot;CMISWebServicesReference.DiscoveryServicePort&quot; name=&quot;DiscoveryServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/DiscoveryService.DiscoveryServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;DiscoveryServicePortBinding&quot; contract=&quot;CMISWebServicesReference.DiscoveryServicePort&quot; name=&quot;DiscoveryServicePort&quot; /&gt;" contractName="CMISWebServicesReference.DiscoveryServicePort" name="DiscoveryServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/MultiFilingService.MultiFilingServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;MultiFilingServicePortBinding&quot; contract=&quot;CMISWebServicesReference.MultiFilingServicePort&quot; name=&quot;MultiFilingServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/MultiFilingService.MultiFilingServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;MultiFilingServicePortBinding&quot; contract=&quot;CMISWebServicesReference.MultiFilingServicePort&quot; name=&quot;MultiFilingServicePort&quot; /&gt;" contractName="CMISWebServicesReference.MultiFilingServicePort" name="MultiFilingServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/NavigationService.NavigationServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;NavigationServicePortBinding&quot; contract=&quot;CMISWebServicesReference.NavigationServicePort&quot; name=&quot;NavigationServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/NavigationService.NavigationServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;NavigationServicePortBinding&quot; contract=&quot;CMISWebServicesReference.NavigationServicePort&quot; name=&quot;NavigationServicePort&quot; /&gt;" contractName="CMISWebServicesReference.NavigationServicePort" name="NavigationServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/ObjectService.ObjectServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;ObjectServicePortBinding&quot; contract=&quot;CMISWebServicesReference.ObjectServicePort&quot; name=&quot;ObjectServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/ObjectService.ObjectServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;ObjectServicePortBinding&quot; contract=&quot;CMISWebServicesReference.ObjectServicePort&quot; name=&quot;ObjectServicePort&quot; /&gt;" contractName="CMISWebServicesReference.ObjectServicePort" name="ObjectServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/PolicyService.PolicyServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;PolicyServicePortBinding&quot; contract=&quot;CMISWebServicesReference.PolicyServicePort&quot; name=&quot;PolicyServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/PolicyService.PolicyServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;PolicyServicePortBinding&quot; contract=&quot;CMISWebServicesReference.PolicyServicePort&quot; name=&quot;PolicyServicePort&quot; /&gt;" contractName="CMISWebServicesReference.PolicyServicePort" name="PolicyServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/RelationshipService.RelationshipServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;RelationshipServicePortBinding&quot; contract=&quot;CMISWebServicesReference.RelationshipServicePort&quot; name=&quot;RelationshipServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/RelationshipService.RelationshipServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;RelationshipServicePortBinding&quot; contract=&quot;CMISWebServicesReference.RelationshipServicePort&quot; name=&quot;RelationshipServicePort&quot; /&gt;" contractName="CMISWebServicesReference.RelationshipServicePort" name="RelationshipServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/RepositoryService.RepositoryServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;RepositoryServicePortBinding&quot; contract=&quot;CMISWebServicesReference.RepositoryServicePort&quot; name=&quot;RepositoryServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/RepositoryService.RepositoryServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;RepositoryServicePortBinding&quot; contract=&quot;CMISWebServicesReference.RepositoryServicePort&quot; name=&quot;RepositoryServicePort&quot; /&gt;" contractName="CMISWebServicesReference.RepositoryServicePort" name="RepositoryServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/VersioningService.VersioningServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;VersioningServicePortBinding&quot; contract=&quot;CMISWebServicesReference.VersioningServicePort&quot; name=&quot;VersioningServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/VersioningService.VersioningServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;VersioningServicePortBinding&quot; contract=&quot;CMISWebServicesReference.VersioningServicePort&quot; name=&quot;VersioningServicePort&quot; /&gt;" contractName="CMISWebServicesReference.VersioningServicePort" name="VersioningServicePort" />

+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/ACLService.ACLServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;ACLServicePortBinding&quot; contract=&quot;CMISWebServicesReference.ACLServicePort&quot; name=&quot;ACLServicePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://cmis/services/ACLService.ACLServicePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;ACLServicePortBinding&quot; contract=&quot;CMISWebServicesReference.ACLServicePort&quot; name=&quot;ACLServicePort&quot; /&gt;" contractName="CMISWebServicesReference.ACLServicePort" name="ACLServicePort" />

+  </endpoints>

+</configurationSnapshot>
\ No newline at end of file
diff --git a/DotCMIS/Service References/CMISWebServicesReference/configuration91.svcinfo b/DotCMIS/Service References/CMISWebServicesReference/configuration91.svcinfo
new file mode 100644
index 0000000..8f10281
--- /dev/null
+++ b/DotCMIS/Service References/CMISWebServicesReference/configuration91.svcinfo
@@ -0,0 +1,1753 @@
+<?xml version="1.0" encoding="utf-8"?>

+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="wtnVK4WWzbkR4CP0ACq1tygHNKM=">

+  <bindingConfigurations>

+    <bindingConfiguration bindingType="basicHttpBinding" name="DiscoveryServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>DiscoveryServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="MultiFilingServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>MultiFilingServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="NavigationServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>NavigationServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="ObjectServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>ObjectServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="PolicyServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>PolicyServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="RelationshipServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>RelationshipServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="RepositoryServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>RepositoryServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="VersioningServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>VersioningServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+    <bindingConfiguration bindingType="basicHttpBinding" name="ACLServicePortBinding">

+      <properties>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>ACLServicePortBinding</serializedValue>

+        </property>

+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:10:00</serializedValue>

+        </property>

+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>00:01:00</serializedValue>

+        </property>

+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>StrongWildcard</serializedValue>

+        </property>

+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>524288</serializedValue>

+        </property>

+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>65536</serializedValue>

+        </property>

+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Text</serializedValue>

+        </property>

+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>32</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>8192</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>4096</serializedValue>

+        </property>

+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>16384</serializedValue>

+        </property>

+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>

+        </property>

+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>

+        </property>

+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>None</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Never</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>TransportSelected</serializedValue>

+        </property>

+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>(Collection)</serializedValue>

+        </property>

+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>

+        </property>

+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>UserName</serializedValue>

+        </property>

+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Default</serializedValue>

+        </property>

+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.Text.UTF8Encoding</serializedValue>

+        </property>

+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>Buffered</serializedValue>

+        </property>

+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>True</serializedValue>

+        </property>

+      </properties>

+    </bindingConfiguration>

+  </bindingConfigurations>

+  <endpoints>

+    <endpoint name="DiscoveryServicePort" contract="CMISWebServicesReference.DiscoveryServicePort" bindingType="basicHttpBinding" address="http://cmis/services/DiscoveryService.DiscoveryServicePort" bindingConfiguration="DiscoveryServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/DiscoveryService.DiscoveryServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>DiscoveryServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.DiscoveryServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>DiscoveryServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="MultiFilingServicePort" contract="CMISWebServicesReference.MultiFilingServicePort" bindingType="basicHttpBinding" address="http://cmis/services/MultiFilingService.MultiFilingServicePort" bindingConfiguration="MultiFilingServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/MultiFilingService.MultiFilingServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>MultiFilingServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.MultiFilingServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>MultiFilingServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="NavigationServicePort" contract="CMISWebServicesReference.NavigationServicePort" bindingType="basicHttpBinding" address="http://cmis/services/NavigationService.NavigationServicePort" bindingConfiguration="NavigationServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/NavigationService.NavigationServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>NavigationServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.NavigationServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>NavigationServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="ObjectServicePort" contract="CMISWebServicesReference.ObjectServicePort" bindingType="basicHttpBinding" address="http://cmis/services/ObjectService.ObjectServicePort" bindingConfiguration="ObjectServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/ObjectService.ObjectServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>ObjectServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.ObjectServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>ObjectServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="PolicyServicePort" contract="CMISWebServicesReference.PolicyServicePort" bindingType="basicHttpBinding" address="http://cmis/services/PolicyService.PolicyServicePort" bindingConfiguration="PolicyServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/PolicyService.PolicyServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>PolicyServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.PolicyServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>PolicyServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="RelationshipServicePort" contract="CMISWebServicesReference.RelationshipServicePort" bindingType="basicHttpBinding" address="http://cmis/services/RelationshipService.RelationshipServicePort" bindingConfiguration="RelationshipServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/RelationshipService.RelationshipServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>RelationshipServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.RelationshipServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>RelationshipServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="RepositoryServicePort" contract="CMISWebServicesReference.RepositoryServicePort" bindingType="basicHttpBinding" address="http://cmis/services/RepositoryService.RepositoryServicePort" bindingConfiguration="RepositoryServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/RepositoryService.RepositoryServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>RepositoryServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.RepositoryServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>RepositoryServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="VersioningServicePort" contract="CMISWebServicesReference.VersioningServicePort" bindingType="basicHttpBinding" address="http://cmis/services/VersioningService.VersioningServicePort" bindingConfiguration="VersioningServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/VersioningService.VersioningServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>VersioningServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.VersioningServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>VersioningServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+    <endpoint name="ACLServicePort" contract="CMISWebServicesReference.ACLServicePort" bindingType="basicHttpBinding" address="http://cmis/services/ACLService.ACLServicePort" bindingConfiguration="ACLServicePortBinding">

+      <properties>

+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>http://cmis/services/ACLService.ACLServicePort</serializedValue>

+        </property>

+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>basicHttpBinding</serializedValue>

+        </property>

+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>ACLServicePortBinding</serializedValue>

+        </property>

+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>CMISWebServicesReference.ACLServicePort</serializedValue>

+        </property>

+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>

+        </property>

+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>&lt;Header /&gt;</serializedValue>

+        </property>

+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>

+        </property>

+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>

+        </property>

+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>

+        </property>

+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>

+        </property>

+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>My</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>LocalMachine</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>

+        </property>

+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>False</serializedValue>

+        </property>

+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue>ACLServicePort</serializedValue>

+        </property>

+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

+          <serializedValue />

+        </property>

+      </properties>

+    </endpoint>

+  </endpoints>

+</SavedWcfConfigurationInformation>
\ No newline at end of file
diff --git a/DotCMIS/app.config b/DotCMIS/app.config
new file mode 100644
index 0000000..92ec810
--- /dev/null
+++ b/DotCMIS/app.config
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="utf-8" ?>

+<configuration>

+    <system.serviceModel>

+        <bindings>

+            <basicHttpBinding>

+                <binding name="DiscoveryServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="MultiFilingServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="NavigationServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="ObjectServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="PolicyServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="RelationshipServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="RepositoryServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="VersioningServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+                <binding name="ACLServicePortBinding" closeTimeout="00:01:00"

+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"

+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"

+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"

+                    useDefaultWebProxy="true">

+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"

+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />

+                    <security mode="None">

+                        <transport clientCredentialType="None" proxyCredentialType="None"

+                            realm="" />

+                        <message clientCredentialType="UserName" algorithmSuite="Default" />

+                    </security>

+                </binding>

+            </basicHttpBinding>

+        </bindings>

+        <client>

+            <endpoint address="http://cmis/services/DiscoveryService.DiscoveryServicePort"

+                binding="basicHttpBinding" bindingConfiguration="DiscoveryServicePortBinding"

+                contract="CMISWebServicesReference.DiscoveryServicePort" name="DiscoveryServicePort" />

+            <endpoint address="http://cmis/services/MultiFilingService.MultiFilingServicePort"

+                binding="basicHttpBinding" bindingConfiguration="MultiFilingServicePortBinding"

+                contract="CMISWebServicesReference.MultiFilingServicePort"

+                name="MultiFilingServicePort" />

+            <endpoint address="http://cmis/services/NavigationService.NavigationServicePort"

+                binding="basicHttpBinding" bindingConfiguration="NavigationServicePortBinding"

+                contract="CMISWebServicesReference.NavigationServicePort"

+                name="NavigationServicePort" />

+            <endpoint address="http://cmis/services/ObjectService.ObjectServicePort"

+                binding="basicHttpBinding" bindingConfiguration="ObjectServicePortBinding"

+                contract="CMISWebServicesReference.ObjectServicePort" name="ObjectServicePort" />

+            <endpoint address="http://cmis/services/PolicyService.PolicyServicePort"

+                binding="basicHttpBinding" bindingConfiguration="PolicyServicePortBinding"

+                contract="CMISWebServicesReference.PolicyServicePort" name="PolicyServicePort" />

+            <endpoint address="http://cmis/services/RelationshipService.RelationshipServicePort"

+                binding="basicHttpBinding" bindingConfiguration="RelationshipServicePortBinding"

+                contract="CMISWebServicesReference.RelationshipServicePort"

+                name="RelationshipServicePort" />

+            <endpoint address="http://cmis/services/RepositoryService.RepositoryServicePort"

+                binding="basicHttpBinding" bindingConfiguration="RepositoryServicePortBinding"

+                contract="CMISWebServicesReference.RepositoryServicePort"

+                name="RepositoryServicePort" />

+            <endpoint address="http://cmis/services/VersioningService.VersioningServicePort"

+                binding="basicHttpBinding" bindingConfiguration="VersioningServicePortBinding"

+                contract="CMISWebServicesReference.VersioningServicePort"

+                name="VersioningServicePort" />

+            <endpoint address="http://cmis/services/ACLService.ACLServicePort"

+                binding="basicHttpBinding" bindingConfiguration="ACLServicePortBinding"

+                contract="CMISWebServicesReference.ACLServicePort" name="ACLServicePort" />

+        </client>

+    </system.serviceModel>

+</configuration>
\ No newline at end of file
diff --git a/DotCMIS/binding/atompub/atompub-linkcache.cs b/DotCMIS/binding/atompub/atompub-linkcache.cs
new file mode 100644
index 0000000..4d8c718
--- /dev/null
+++ b/DotCMIS/binding/atompub/atompub-linkcache.cs
@@ -0,0 +1,377 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+using DotCMIS.Binding.Impl;

+using System.Web;

+

+namespace DotCMIS.Binding.AtomPub

+{

+    internal class LinkCache

+    {

+        private const int CacheSizeRepositories = 10;

+        private const int CacheSizeTypes = 100;

+        private const int CacheSizeLinks = 400;

+

+        private ICache linkCache;

+        private ICache typeLinkCache;

+        private ICache collectionLinkCache;

+        private ICache templateCache;

+        private ICache repositoryLinkCache;

+

+        public LinkCache(BindingSession session)

+        {

+            int repCount = session.GetValue(SessionParameter.CacheSizeRepositories, CacheSizeRepositories);

+            if (repCount < 1)

+            {

+                repCount = CacheSizeRepositories;

+            }

+

+            int typeCount = session.GetValue(SessionParameter.CacheSizeTypes, CacheSizeTypes);

+            if (typeCount < 1)

+            {

+                typeCount = CacheSizeTypes;

+            }

+

+            int objCount = session.GetValue(SessionParameter.CacheSizeLinks, CacheSizeLinks);

+            if (objCount < 1)

+            {

+                objCount = CacheSizeLinks;

+            }

+

+            linkCache = new Cache("Link Cache");

+            linkCache.Initialize(new string[] {

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=" + repCount, // repository

+                typeof(LruCacheLevel).FullName + " " + LruCacheLevel.MaxEntries + "=" + objCount, // id

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=16", // rel

+                typeof(ContentTypeCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=3,"

+                        + DictionaryCacheLevel.SingleValue + "=true" // type

+        });

+

+            typeLinkCache = new Cache("Type Link Cache");

+            typeLinkCache.Initialize(new string[] {

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=" + repCount, // repository

+                typeof(LruCacheLevel).FullName + " " + LruCacheLevel.MaxEntries + "=" + typeCount, // id

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=16", // rel

+                typeof(ContentTypeCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=3,"

+                        + DictionaryCacheLevel.SingleValue + "=true"// type

+        });

+

+            collectionLinkCache = new Cache("Collection Link Cache");

+            collectionLinkCache.Initialize(new string[] {

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=" + repCount, // repository

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=8" // collection

+        });

+

+            templateCache = new Cache("URI Template Cache");

+            templateCache.Initialize(new string[] {

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=" + repCount, // repository

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=6" // type

+        });

+

+            repositoryLinkCache = new Cache("Repository Link Cache");

+            repositoryLinkCache.Initialize(new string[] {

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=" + repCount, // repository

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=6" // rel

+        });

+        }

+

+        // ---- links ---

+

+        public void AddLink(string repositoryId, string id, string rel, string type, string link)

+        {

+            linkCache.Put(new string[] { repositoryId, id, rel, type }, link);

+        }

+

+        public void RemoveLinks(string repositoryId, string id)

+        {

+            linkCache.Remove(new string[] { repositoryId, id });

+        }

+

+        public string GetLink(string repositoryId, string id, string rel, string type)

+        {

+            return (string)linkCache.Get(new string[] { repositoryId, id, rel, type });

+        }

+

+        public string GetLink(string repositoryId, string id, string rel)

+        {

+            return GetLink(repositoryId, id, rel, null);

+        }

+

+        public int CheckLink(string repositoryId, string id, string rel, string type)

+        {

+            return linkCache.Check(new string[] { repositoryId, id, rel, type });

+        }

+

+        public void LockLinks()

+        {

+            linkCache.Lock();

+        }

+

+        public void UnlockLinks()

+        {

+            linkCache.Unlock();

+        }

+

+        // ---- type links ---

+

+        public void AddTypeLink(string repositoryId, string id, string rel, string type, string link)

+        {

+            typeLinkCache.Put(new string[] { repositoryId, id, rel, type }, link);

+        }

+

+        public void RemoveTypeLinks(string repositoryId, string id)

+        {

+            typeLinkCache.Remove(new string[] { repositoryId, id });

+        }

+

+        public string GetTypeLink(string repositoryId, string id, string rel, string type)

+        {

+            return (string)typeLinkCache.Get(new string[] { repositoryId, id, rel, type });

+        }

+

+        public void LockTypeLinks()

+        {

+            typeLinkCache.Lock();

+        }

+

+        public void UnlockTypeLinks()

+        {

+            typeLinkCache.Unlock();

+        }

+

+        // ---- collections ----

+

+        public void AddCollection(string repositoryId, string collection, string link)

+        {

+            collectionLinkCache.Put(new string[] { repositoryId, collection }, link);

+        }

+

+        public string GetCollection(string repositoryId, string collection)

+        {

+            return (string)collectionLinkCache.Get(new string[] { repositoryId, collection });

+        }

+

+        // ---- templates ----

+

+        public void AddTemplate(string repositoryId, string type, string link)

+        {

+            templateCache.Put(new string[] { repositoryId, type }, link);

+        }

+

+        public string GetTemplateLink(string repositoryId, string type, IDictionary<string, object> parameters)

+        {

+            string template = (string)templateCache.Get(new string[] { repositoryId, type });

+            if (template == null)

+            {

+                return null;

+            }

+

+            StringBuilder result = new StringBuilder();

+            StringBuilder param = new StringBuilder();

+

+            bool paramMode = false;

+            for (int i = 0; i < template.Length; i++)

+            {

+                char c = template[i];

+

+                if (paramMode)

+                {

+                    if (c == '}')

+                    {

+                        paramMode = false;

+

+                        object paramValue;

+                        if (parameters.TryGetValue(param.ToString(), out paramValue))

+                        {

+                            result.Append(HttpUtility.UrlEncode(UrlBuilder.NormalizeParameter(paramValue)));

+                        }

+

+                        param = new StringBuilder();

+                    }

+                    else

+                    {

+                        param.Append(c);

+                    }

+                }

+                else

+                {

+                    if (c == '{')

+                    {

+                        paramMode = true;

+                    }

+                    else

+                    {

+                        result.Append(c);

+                    }

+                }

+            }

+

+            return result.ToString();

+        }

+

+        // ---- repository links ----

+

+        public void AddRepositoryLink(string repositoryId, string rel, string link)

+        {

+            repositoryLinkCache.Put(new string[] { repositoryId, rel }, link);

+        }

+

+        public string GetRepositoryLink(string repositoryId, string rel)

+        {

+            return (string)repositoryLinkCache.Get(new string[] { repositoryId, rel });

+        }

+

+        // ---- clear ----

+

+        public void ClearRepository(string repositoryId)

+        {

+            linkCache.Remove(new string[] { repositoryId });

+            typeLinkCache.Remove(new string[] { repositoryId });

+            collectionLinkCache.Remove(new string[] { repositoryId });

+            templateCache.Remove(new string[] { repositoryId });

+            repositoryLinkCache.Remove(new string[] { repositoryId });

+        }

+    }

+

+    internal class ContentTypeCacheLevel : DictionaryCacheLevel

+    {

+        public ContentTypeCacheLevel()

+        {

+            EnableKeyFallback(null);

+        }

+

+        public override object this[string key]

+        {

+            get

+            {

+                return base[Normalize(key)];

+            }

+            set

+            {

+                base[Normalize(key)] = value;

+            }

+        }

+

+        public override void Remove(string key)

+        {

+            base.Remove(Normalize(key));

+        }

+

+        private string Normalize(string key)

+        {

+            if (key == null)

+            {

+                return null;

+            }

+

+            StringBuilder sb = new StringBuilder();

+            int parameterStart = 0;

+

+            // first, get the MIME type

+            for (int i = 0; i < key.Length; i++)

+            {

+                char c = key[i];

+

+                if (Char.IsWhiteSpace(c))

+                {

+                    continue;

+                }

+                else if (c == ';')

+                {

+                    parameterStart = i;

+                    break;

+                }

+

+                sb.Append(Char.ToLower(c));

+            }

+

+            // if parameters have been found, gather them

+            if (parameterStart > 0)

+            {

+                SortedList<string, string> parameter = new SortedList<string, string>();

+                StringBuilder ksb = new StringBuilder();

+                StringBuilder vsb = new StringBuilder();

+                bool isKey = true;

+

+                for (int i = parameterStart + 1; i < key.Length; i++)

+                {

+                    char c = key[i];

+                    if (Char.IsWhiteSpace(c))

+                    {

+                        continue;

+                    }

+

+                    if (isKey)

+                    {

+                        if (c == '=')

+                        {

+                            // value start

+                            isKey = false;

+                            continue;

+                        }

+

+                        ksb.Append(Char.ToLower(c));

+                    }

+                    else

+                    {

+                        if (c == ';')

+                        {

+                            // next key

+                            isKey = true;

+

+                            parameter.Add(ksb.ToString(), vsb.ToString());

+

+                            ksb = new StringBuilder();

+                            vsb = new StringBuilder();

+

+                            continue;

+                        }

+                        else if (c == '"')

+                        {

+                            // filter quotes

+                            continue;

+                        }

+

+                        vsb.Append(Char.ToLower(c));

+                    }

+                }

+

+                // add last parameter

+                if (ksb.Length > 0)

+                {

+                    parameter.Add(ksb.ToString(), vsb.ToString());

+                }

+

+                // write parameters sorted by key

+                for (int i = 0; i < parameter.Count; i++)

+                {

+                    sb.Append(";");

+                    sb.Append(parameter.Keys[i]);

+                    sb.Append("=");

+                    sb.Append(parameter.Values[i]);

+                }

+            }

+

+            return sb.ToString();

+        }

+    }

+}

diff --git a/DotCMIS/binding/atompub/atompub-parser.cs b/DotCMIS/binding/atompub/atompub-parser.cs
new file mode 100644
index 0000000..060f464
--- /dev/null
+++ b/DotCMIS/binding/atompub/atompub-parser.cs
@@ -0,0 +1,808 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.IO;

+using System.Xml;

+using System.Xml.Serialization;

+using DotCMIS.CMISWebServicesReference;

+using DotCMIS.Exceptions;

+using System.Globalization;

+

+namespace DotCMIS.Binding.AtomPub

+{

+    internal class AtomPubParser

+    {

+        private static XmlSerializer RepositoryInfoSerializer;

+        private static XmlSerializer TypeDefintionSerializer;

+        private static XmlSerializer ObjectSerializer;

+        private static XmlSerializer AllowableActionsSerializer;

+        private static XmlSerializer AclSerializer;

+

+        static AtomPubParser()

+        {

+            XmlRootAttribute repositoryInfoXmlRoot = new XmlRootAttribute("repositoryInfo");

+            repositoryInfoXmlRoot.Namespace = AtomPubConstants.NamespaceRestAtom;

+            RepositoryInfoSerializer = new XmlSerializer(typeof(cmisRepositoryInfoType), repositoryInfoXmlRoot);

+

+            XmlRootAttribute typeDefinitionXmlRoot = new XmlRootAttribute("type");

+            typeDefinitionXmlRoot.Namespace = AtomPubConstants.NamespaceRestAtom;

+            TypeDefintionSerializer = new XmlSerializer(typeof(cmisTypeDefinitionType), typeDefinitionXmlRoot);

+

+            XmlRootAttribute objectXmlRoot = new XmlRootAttribute("object");

+            objectXmlRoot.Namespace = AtomPubConstants.NamespaceRestAtom;

+            ObjectSerializer = new XmlSerializer(typeof(cmisObjectType), objectXmlRoot);

+

+            XmlRootAttribute allowableActionsXmlRoot = new XmlRootAttribute("allowableActions");

+            allowableActionsXmlRoot.Namespace = AtomPubConstants.NamespaceRestAtom;

+            AllowableActionsSerializer = new XmlSerializer(typeof(cmisAllowableActionsType), objectXmlRoot);

+

+            XmlRootAttribute aclXmlRoot = new XmlRootAttribute("accessControlList");

+            aclXmlRoot.Namespace = AtomPubConstants.NamespaceRestAtom;

+            AclSerializer = new XmlSerializer(typeof(cmisAccessControlListType), objectXmlRoot);

+        }

+

+        private Stream stream;

+        private AtomBase parseResult;

+

+        public AtomPubParser(Stream stream)

+        {

+            if (stream == null)

+            {

+                throw new ArgumentNullException("stream");

+            }

+

+            this.stream = stream;

+        }

+

+        public AtomBase GetParseResults()

+        {

+            return parseResult;

+        }

+

+        public void Parse()

+        {

+            XmlReaderSettings settings = new XmlReaderSettings();

+            settings.IgnoreWhitespace = true;

+            settings.IgnoreComments = true;

+

+            XmlReader reader = XmlReader.Create(stream, settings);

+            try

+            {

+                while (true)

+                {

+                    if (reader.IsStartElement())

+                    {

+                        if (AtomPubConstants.NamespaceAtom == reader.NamespaceURI)

+                        {

+                            if (AtomPubConstants.TagFeed == reader.LocalName)

+                            {

+                                parseResult = ParseFeed(reader);

+                                break;

+                            }

+                            else if (AtomPubConstants.TagEntry == reader.LocalName)

+                            {

+                                parseResult = ParseEntry(reader);

+                                break;

+                            }

+                        }

+                        else if (AtomPubConstants.NamespaceCMIS == reader.NamespaceURI)

+                        {

+                            if (AtomPubConstants.TagAllowableActions == reader.LocalName)

+                            {

+                                parseResult = ParseAllowableActions(reader);

+                                break;

+                            }

+                            else if (AtomPubConstants.TagACL == reader.LocalName)

+                            {

+                                parseResult = ParseACL(reader);

+                                break;

+                            }

+                        }

+                        else if (AtomPubConstants.NamespaceAPP == reader.NamespaceURI)

+                        {

+                            if (AtomPubConstants.TagService == reader.LocalName)

+                            {

+                                parseResult = ParseServiceDoc(reader);

+                                break;

+                            }

+                        }

+                    }

+

+                    if (!reader.Read()) { break; }

+                }

+            }

+            finally

+            {

+                try { reader.Close(); }

+                catch (Exception) { }

+                try { stream.Close(); }

+                catch (Exception) { }

+            }

+        }

+

+        private ServiceDoc ParseServiceDoc(XmlReader reader)

+        {

+            ServiceDoc result = new ServiceDoc();

+

+            reader.Read();

+            while (true)

+            {

+                if (reader.NodeType == XmlNodeType.Element)

+                {

+                    if (AtomPubConstants.NamespaceAPP == reader.NamespaceURI)

+                    {

+                        if (AtomPubConstants.TagWorkspace == reader.LocalName)

+                        {

+                            result.AddWorkspace(ParseWorkspace(reader));

+                        }

+                        else

+                        {

+                            skip(reader);

+                        }

+                    }

+                    else

+                    {

+                        skip(reader);

+                    }

+                }

+                else if (reader.NodeType == XmlNodeType.EndElement)

+                {

+                    break;

+                }

+                else

+                {

+                    if (!reader.Read()) { break; }

+                }

+            }

+

+            return result;

+        }

+

+        private RepositoryWorkspace ParseWorkspace(XmlReader reader)

+        {

+            RepositoryWorkspace workspace = new RepositoryWorkspace();

+

+            reader.Read();

+            while (true)

+            {

+                if (reader.NodeType == XmlNodeType.Element)

+                {

+                    AtomElement element = ParseWorkspaceElement(reader);

+

+                    if (element != null && element.Object is cmisRepositoryInfoType)

+                    {

+                        workspace.Id = ((cmisRepositoryInfoType)element.Object).repositoryId;

+                    }

+

+                    workspace.AddElement(element);

+                }

+                else if (reader.NodeType == XmlNodeType.EndElement)

+                {

+                    break;

+                }

+                else

+                {

+                    if (!reader.Read()) { break; }

+                }

+            }

+

+            reader.Read();

+

+            return workspace;

+        }

+

+        private AtomElement ParseWorkspaceElement(XmlReader reader)

+        {

+            if (AtomPubConstants.NamespaceRestAtom == reader.NamespaceURI)

+            {

+                if (AtomPubConstants.TagRepositoryInfo == reader.LocalName)

+                {

+                    return DeserializeRepositoryInfo(reader);

+                }

+                else if (AtomPubConstants.TagUriTemplate == reader.LocalName)

+                {

+                    return ParseTemplate(reader);

+                }

+            }

+            else if (AtomPubConstants.NamespaceAtom == reader.NamespaceURI)

+            {

+                if (AtomPubConstants.TagLink == reader.LocalName)

+                {

+                    return ParseLink(reader);

+                }

+            }

+            else if (AtomPubConstants.NamespaceAPP == reader.NamespaceURI)

+            {

+                if (AtomPubConstants.TagCollection == reader.LocalName)

+                {

+                    return ParseCollection(reader);

+                }

+            }

+

+            skip(reader);

+

+            return null;

+        }

+

+        private AtomElement ParseTemplate(XmlReader reader)

+        {

+            Dictionary<string, string> result = new Dictionary<string, string>();

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+

+            reader.Read();

+            while (true)

+            {

+                if (reader.NodeType == XmlNodeType.Element)

+                {

+                    if (AtomPubConstants.NamespaceRestAtom == reader.NamespaceURI)

+                    {

+                        if (AtomPubConstants.TagTemplateTemplate == reader.LocalName)

+                        {

+                            result["template"] = ReadText(reader);

+                        }

+                        else if (AtomPubConstants.TagTemplateType == reader.LocalName)

+                        {

+                            result["type"] = ReadText(reader);

+                        }

+                        else

+                        {

+                            skip(reader);

+                        }

+                    }

+                    else

+                    {

+                        skip(reader);

+                    }

+                }

+                else if (reader.NodeType == XmlNodeType.EndElement)

+                {

+                    break;

+                }

+                else

+                {

+                    if (!reader.Read()) { break; }

+                }

+            }

+

+            reader.Read();

+

+            return new AtomElement(ns, ln, result);

+        }

+

+        private AtomElement ParseCollection(XmlReader reader)

+        {

+            Dictionary<string, string> result = new Dictionary<string, string>();

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+

+            if (reader.MoveToAttribute("href"))

+            {

+                result["href"] = reader.Value;

+                reader.MoveToElement();

+            }

+

+            reader.Read();

+            while (true)

+            {

+                if (reader.NodeType == XmlNodeType.Element)

+                {

+                    if (AtomPubConstants.NamespaceRestAtom == reader.NamespaceURI && AtomPubConstants.TagCollectionType == reader.LocalName)

+                    {

+                        result["collectionType"] = ReadText(reader);

+                    }

+                    else

+                    {

+                        skip(reader);

+                    }

+                }

+                else if (reader.NodeType == XmlNodeType.EndElement)

+                {

+                    break;

+                }

+                else

+                {

+                    if (!reader.Read()) { break; }

+                }

+            }

+

+            reader.Read();

+

+            return new AtomElement(ns, ln, result);

+        }

+

+        private AtomElement ParseLink(XmlReader reader)

+        {

+            AtomLink result = new AtomLink();

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+

+            if (reader.HasAttributes)

+            {

+                while (reader.MoveToNextAttribute())

+                {

+                    if (AtomPubConstants.LinkRel == reader.Name)

+                    {

+                        result.Rel = reader.Value;

+                    }

+                    else if (AtomPubConstants.LinkHref == reader.Name)

+                    {

+                        result.Href = reader.Value;

+                    }

+                    else if (AtomPubConstants.LinkType == reader.Name)

+                    {

+                        result.Type = reader.Value;

+                    }

+                }

+                reader.MoveToElement();

+            }

+

+            skip(reader);

+

+            return new AtomElement(ns, ln, result);

+        }

+

+        private AtomFeed ParseFeed(XmlReader reader)

+        {

+            AtomFeed feed = new AtomFeed();

+

+            reader.Read();

+            while (true)

+            {

+                if (reader.NodeType == XmlNodeType.Element)

+                {

+                    if (AtomPubConstants.NamespaceAtom == reader.NamespaceURI)

+                    {

+                        if (AtomPubConstants.TagLink == reader.LocalName)

+                        {

+                            feed.AddElement(ParseLink(reader));

+                        }

+                        else if (AtomPubConstants.TagEntry == reader.LocalName)

+                        {

+                            feed.AddEntry(ParseEntry(reader));

+                        }

+                        else

+                        {

+                            skip(reader);

+                        }

+                    }

+                    else if (AtomPubConstants.NamespaceRestAtom == reader.NamespaceURI)

+                    {

+                        if (AtomPubConstants.TagNumItems == reader.LocalName)

+                        {

+                            feed.AddElement(ParseLong(reader));

+                        }

+                        else

+                        {

+                            skip(reader);

+                        }

+                    }

+                    else

+                    {

+                        skip(reader);

+                    }

+                }

+                else if (reader.NodeType == XmlNodeType.EndElement)

+                {

+                    break;

+                }

+                else

+                {

+                    if (!reader.Read()) { break; }

+                }

+            }

+

+            reader.Read();

+

+            return feed;

+        }

+

+        private AtomEntry ParseEntry(XmlReader reader)

+        {

+            AtomEntry entry = new AtomEntry();

+

+            reader.Read();

+            while (true)

+            {

+                if (reader.NodeType == XmlNodeType.Element)

+                {

+                    AtomElement element = ParseElement(reader);

+

+                    if (element != null)

+                    {

+                        entry.AddElement(element);

+

+                        if (element.Object is cmisObjectType && ((cmisObjectType)element.Object).properties != null)

+                        {

+                            foreach (cmisProperty prop in ((cmisObjectType)element.Object).properties.Items)

+                            {

+                                if (PropertyIds.ObjectId == prop.propertyDefinitionId)

+                                {

+                                    entry.Id = ((cmisPropertyId)prop).value[0];

+                                }

+                            }

+                        }

+                        else if (element.Object is cmisTypeDefinitionType)

+                        {

+                            entry.Id = ((cmisTypeDefinitionType)element.Object).id;

+                        }

+                    }

+

+                }

+                else if (reader.NodeType == XmlNodeType.EndElement)

+                {

+                    break;

+                }

+                else

+                {

+                    if (!reader.Read()) { break; }

+                }

+            }

+

+            reader.Read();

+

+            return entry;

+        }

+

+        private AtomAcl ParseACL(XmlReader reader)

+        {

+            AtomAcl result = new AtomAcl();

+            result.ACL = DeserializeACL(reader);

+            return result;

+        }

+

+        private AtomAllowableActions ParseAllowableActions(XmlReader reader)

+        {

+            AtomAllowableActions result = new AtomAllowableActions();

+            result.AllowableActions = DeserializeAllowableActions(reader);

+            return result;

+        }

+

+        private AtomElement ParseElement(XmlReader reader)

+        {

+            if (AtomPubConstants.NamespaceRestAtom == reader.NamespaceURI)

+            {

+                if (AtomPubConstants.TagObject == reader.LocalName)

+                {

+                    return DeserializeObject(reader);

+                }

+                else if (AtomPubConstants.TagPathSegment == reader.LocalName

+                      || AtomPubConstants.TagRelativePathSegment == reader.LocalName)

+                {

+                    return ParseText(reader);

+                }

+                else if (AtomPubConstants.TagType == reader.LocalName)

+                {

+                    return DeserializeTypeDefinition(reader);

+                }

+                else if (AtomPubConstants.TagChildren == reader.LocalName)

+                {

+                    return ParseChildren(reader);

+                }

+            }

+            else if (AtomPubConstants.NamespaceAtom == reader.NamespaceURI)

+            {

+                if (AtomPubConstants.TagLink == reader.LocalName)

+                {

+                    return ParseLink(reader);

+                }

+                else if (AtomPubConstants.TagContent == reader.LocalName)

+                {

+                    return ParseAtomContentSrc(reader);

+                }

+            }

+

+            skip(reader);

+

+            return null;

+        }

+

+        private AtomElement ParseChildren(XmlReader reader)

+        {

+            AtomElement result = null;

+            string childName = reader.LocalName;

+            string childNamespace = reader.NamespaceURI;

+

+            reader.Read();

+            while (true)

+            {

+                if (reader.NodeType == XmlNodeType.Element)

+                {

+                    if (AtomPubConstants.NamespaceAtom == reader.NamespaceURI && AtomPubConstants.TagFeed == reader.LocalName)

+                    {

+                        result = new AtomElement(childNamespace, childName, ParseFeed(reader));

+                    }

+                    else

+                    {

+                        skip(reader);

+                    }

+                }

+                else if (reader.NodeType == XmlNodeType.EndElement)

+                {

+                    break;

+                }

+                else

+                {

+                    if (!reader.Read()) { break; }

+                }

+            }

+

+            reader.Read();

+

+            return result;

+        }

+

+        private AtomElement ParseAtomContentSrc(XmlReader reader)

+        {

+            AtomLink result = new AtomLink();

+            result.Rel = AtomPubConstants.LinkRelContent;

+

+            if (reader.MoveToAttribute(AtomPubConstants.ContentSrc))

+            {

+                result.Href = reader.Value;

+                reader.MoveToElement();

+            }

+

+            skip(reader);

+

+            return new AtomElement(reader.NamespaceURI, reader.LocalName, result);

+        }

+

+        private AtomElement ParseText(XmlReader reader)

+        {

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+            return new AtomElement(ns, ln, ReadText(reader));

+        }

+

+        private AtomElement ParseLong(XmlReader reader)

+        {

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+            return new AtomElement(ns, ln, Int64.Parse(ReadText(reader)));

+        }

+

+        private AtomElement DeserializeRepositoryInfo(XmlReader reader)

+        {

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+            return new AtomElement(ns, ln, RepositoryInfoSerializer.Deserialize(reader));

+        }

+

+        private AtomElement DeserializeTypeDefinition(XmlReader reader)

+        {

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+            return new AtomElement(ns, ln, TypeDefintionSerializer.Deserialize(reader));

+        }

+

+        private AtomElement DeserializeObject(XmlReader reader)

+        {

+            string ns = reader.NamespaceURI;

+            string ln = reader.LocalName;

+            return new AtomElement(ns, ln, ObjectSerializer.Deserialize(reader));

+        }

+

+        private cmisAccessControlListType DeserializeACL(XmlReader reader)

+        {

+            return (cmisAccessControlListType)AclSerializer.Deserialize(reader);

+        }

+

+

+        private cmisAllowableActionsType DeserializeAllowableActions(XmlReader reader)

+        {

+            return (cmisAllowableActionsType)AllowableActionsSerializer.Deserialize(reader);

+        }

+

+        private string ReadText(XmlReader reader)

+        {

+            string text = null;

+            if (reader.Read())

+            {

+                text = reader.ReadContentAsString();

+                reader.Read();

+            }

+

+            return text;

+        }

+

+        private void skip(XmlReader reader)

+        {

+            if (!reader.IsEmptyElement)

+            {

+                int level = 1;

+                while (reader.Read())

+                {

+                    if (reader.NodeType == XmlNodeType.Element)

+                    {

+                        level++;

+                    }

+                    else if (reader.NodeType == XmlNodeType.EndElement)

+                    {

+                        level--;

+                        if (level == 0)

+                        {

+                            break;

+                        }

+                    }

+                }

+            }

+

+            reader.Read();

+        }

+    }

+

+    internal class AtomElement

+    {

+        public string Namespace { get; private set; }

+        public string LocalName { get; private set; }

+        public object Object { get; private set; }

+

+        public AtomElement(string elementNamespace, string elementLocalName, object elementObject)

+        {

+            Namespace = elementNamespace;

+            LocalName = elementLocalName;

+            Object = elementObject;

+        }

+

+        public override string ToString()

+        {

+            return "{" + Namespace + "}" + LocalName + ": " + Object;

+        }

+    }

+

+    internal abstract class AtomBase

+    {

+        public IList<AtomElement> elements = new List<AtomElement>();

+

+        public abstract string GetAtomType();

+

+        public IList<AtomElement> GetElements()

+        {

+            return elements;

+        }

+

+        public void AddElement(AtomElement element)

+        {

+            if (element != null)

+            {

+                elements.Add(element);

+            }

+        }

+    }

+

+    internal class ServiceDoc : AtomBase

+    {

+        private IList<RepositoryWorkspace> workspaces = new List<RepositoryWorkspace>();

+

+        public override string GetAtomType()

+        {

+            return "Service Document";

+        }

+

+        public IList<RepositoryWorkspace> GetWorkspaces()

+        {

+            return workspaces;

+        }

+

+        public void AddWorkspace(RepositoryWorkspace ws)

+        {

+            if (ws != null)

+            {

+                workspaces.Add(ws);

+            }

+        }

+

+        public override string ToString()

+        {

+            return "Service Doc: " + workspaces;

+        }

+    }

+

+    internal class RepositoryWorkspace : AtomBase

+    {

+        public string Id { get; set; }

+

+        public override string GetAtomType()

+        {

+            return "Repository Workspace";

+        }

+

+        public override string ToString()

+        {

+            return "Workspace \"" + Id + "\": " + GetElements();

+        }

+    }

+

+    internal class AtomEntry : AtomBase

+    {

+        public string Id { get; set; }

+

+        public override string GetAtomType()

+        {

+            return "Atom Entry";

+        }

+

+        public override string ToString()

+        {

+            return "Entry \"" + Id + "\": " + GetElements();

+        }

+    }

+

+    internal class AtomFeed : AtomBase

+    {

+        private IList<AtomEntry> entries = new List<AtomEntry>();

+

+        public override string GetAtomType()

+        {

+            return "Atom Feed";

+        }

+

+        public IList<AtomEntry> GetEntries()

+        {

+            return entries;

+        }

+

+        public void AddEntry(AtomEntry entry)

+        {

+            if (entry != null)

+            {

+                entries.Add(entry);

+            }

+        }

+

+        public override string ToString()

+        {

+            return "Feed : " + GetElements() + " " + entries;

+        }

+    }

+

+    internal class AtomAcl : AtomBase

+    {

+        public cmisAccessControlListType ACL { get; set; }

+

+        public override string GetAtomType()

+        {

+            return "ACL";

+        }

+    }

+

+    internal class AtomAllowableActions : AtomBase

+    {

+        public cmisAllowableActionsType AllowableActions { get; set; }

+

+        public override string GetAtomType()

+        {

+            return "Allowable Actions";

+        }

+    }

+

+    internal class AtomLink

+    {

+        public string Rel { get; set; }

+        public string Type { get; set; }

+        public string Href { get; set; }

+

+        public override string ToString()

+        {

+            return "Link: rel=\"" + Rel + "\" type=\"" + Type + "\" href=\"" + Href + "\"";

+        }

+    }

+}

diff --git a/DotCMIS/binding/atompub/atompub-writer.cs b/DotCMIS/binding/atompub/atompub-writer.cs
new file mode 100644
index 0000000..ff38fdf
--- /dev/null
+++ b/DotCMIS/binding/atompub/atompub-writer.cs
@@ -0,0 +1,290 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+using DotCMIS.CMISWebServicesReference;

+using System.IO;

+using DotCMIS.Exceptions;

+using System.Xml;

+using System.Globalization;

+using System.Xml.Serialization;

+using DotCMIS.Enums;

+

+namespace DotCMIS.Binding.AtomPub

+{

+    internal class AtomWriter

+    {

+        public static XmlSerializer ObjectSerializer;

+        public static XmlSerializer AclSerializer;

+

+        static AtomWriter()

+        {

+            XmlRootAttribute objectXmlRoot = new XmlRootAttribute("object");

+            objectXmlRoot.Namespace = AtomPubConstants.NamespaceRestAtom;

+            ObjectSerializer = new XmlSerializer(typeof(cmisObjectType), objectXmlRoot);

+

+            XmlRootAttribute aclXmlRoot = new XmlRootAttribute("acl");

+            aclXmlRoot.Namespace = AtomPubConstants.NamespaceRestAtom;

+            AclSerializer = new XmlSerializer(typeof(cmisAccessControlListType), objectXmlRoot);

+        }

+

+        public const string PrefixAtom = "atom";

+        public const string PrefixCMIS = "cmis";

+        public const string PrefixRestAtom = "cmisra";

+    }

+

+    internal class AtomEntryWriter

+    {

+        private const int BufferSize = 64 * 1024;

+

+        private cmisObjectType cmisObject;

+        private Stream stream;

+        private string mediaType;

+

+        public AtomEntryWriter(cmisObjectType cmisObject)

+            : this(cmisObject, null, null)

+        {

+        }

+

+        public AtomEntryWriter(cmisObjectType cmisObject, string mediaType, Stream stream)

+        {

+            if (cmisObject == null || cmisObject.properties == null)

+            {

+                throw new CmisInvalidArgumentException("Object and properties must not be null!");

+            }

+

+            if (stream != null && mediaType == null)

+            {

+                throw new CmisInvalidArgumentException("Media type must be set if a stream is present!");

+            }

+

+            this.cmisObject = cmisObject;

+            this.mediaType = mediaType;

+            this.stream = stream;

+        }

+

+        public void Write(Stream outStream)

+        {

+            using (XmlWriter writer = XmlWriter.Create(outStream))

+            {

+                // start doc

+                writer.WriteStartDocument();

+

+                // start entry

+                writer.WriteStartElement(AtomWriter.PrefixAtom, AtomPubConstants.TagEntry, AtomPubConstants.NamespaceAtom);

+                writer.WriteAttributeString("xmlns", AtomWriter.PrefixAtom, null, AtomPubConstants.NamespaceAtom);

+                writer.WriteAttributeString("xmlns", AtomWriter.PrefixCMIS, null, AtomPubConstants.NamespaceCMIS);

+                writer.WriteAttributeString("xmlns", AtomWriter.PrefixRestAtom, null, AtomPubConstants.NamespaceRestAtom);

+

+                // atom:id

+                writer.WriteStartElement(AtomWriter.PrefixAtom, AtomPubConstants.TagAtomId, AtomPubConstants.NamespaceAtom);

+                writer.WriteString("urn:uuid:00000000-0000-0000-0000-00000000000");

+                writer.WriteEndElement();

+

+                // atom:title

+                writer.WriteStartElement(AtomWriter.PrefixAtom, AtomPubConstants.TagAtomTitle, AtomPubConstants.NamespaceAtom);

+                writer.WriteString(GetTitle());

+                writer.WriteEndElement();

+

+                // atom:updated

+                writer.WriteStartElement(AtomWriter.PrefixAtom, AtomPubConstants.TagAtomUpdated, AtomPubConstants.NamespaceAtom);

+                writer.WriteString(GetUpdated());

+                writer.WriteEndElement();

+

+                // content

+                if (stream != null)

+                {

+                    writer.WriteStartElement(AtomWriter.PrefixRestAtom, AtomPubConstants.TagContent, AtomPubConstants.NamespaceRestAtom);

+

+                    writer.WriteStartElement(AtomWriter.PrefixRestAtom, AtomPubConstants.TagContentMediatype, AtomPubConstants.NamespaceRestAtom);

+                    writer.WriteString(mediaType);

+                    writer.WriteEndElement();

+

+                    writer.WriteStartElement(AtomWriter.PrefixRestAtom, AtomPubConstants.TagContentBase64, AtomPubConstants.NamespaceRestAtom);

+                    WriteContent(writer);

+                    writer.WriteEndElement();

+

+                    writer.WriteEndElement();

+                }

+

+                // object

+                AtomWriter.ObjectSerializer.Serialize(writer, cmisObject);

+

+                // end entry

+                writer.WriteEndElement();

+

+                // end document

+                writer.WriteEndDocument();

+

+                writer.Flush();

+            }

+        }

+

+        // ---- internal ----

+

+        private string GetTitle()

+        {

+            string result = "";

+

+            foreach (cmisProperty property in cmisObject.properties.Items)

+            {

+                if (PropertyIds.Name == property.propertyDefinitionId && property is cmisPropertyString)

+                {

+                    string[] values = ((cmisPropertyString)property).value;

+                    if (values != null && values.Length > 0)

+                    {

+                        return values[0];

+                    }

+                }

+            }

+

+            return result;

+        }

+

+        private string GetUpdated()

+        {

+            return DateTime.UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'", CultureInfo.InvariantCulture);

+        }

+

+        private void WriteContent(XmlWriter writer)

+        {

+            byte[] byteArray = null;

+

+            if (stream is MemoryStream)

+            {

+                byteArray = ((MemoryStream)stream).ToArray();

+            }

+            else

+            {

+                MemoryStream memStream = new MemoryStream();

+                byte[] buffer = new byte[BufferSize];

+                int bytes;

+                while ((bytes = stream.Read(buffer, 0, buffer.Length)) > 0)

+                {

+                    memStream.Write(buffer, 0, bytes);

+                }

+                byteArray = memStream.ToArray();

+            }

+

+            writer.WriteBase64(byteArray, 0, byteArray.Length);

+        }

+    }

+

+    internal class AtomQueryWriter

+    {

+        private string statement;

+        private bool? searchAllVersions;

+        private bool? includeAllowableActions;

+        private IncludeRelationships? includeRelationships;

+        private string renditionFilter;

+        private long? maxItems;

+        private long? skipCount;

+

+        public AtomQueryWriter(string statement, bool? searchAllVersions,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            long? maxItems, long? skipCount)

+        {

+            this.statement = statement;

+            this.searchAllVersions = searchAllVersions;

+            this.includeAllowableActions = includeAllowableActions;

+            this.includeRelationships = includeRelationships;

+            this.renditionFilter = renditionFilter;

+            this.maxItems = maxItems;

+            this.skipCount = skipCount;

+        }

+

+        public void Write(Stream outStream)

+        {

+            using (XmlWriter writer = XmlWriter.Create(outStream))

+            {

+                // start doc

+                writer.WriteStartDocument();

+

+                // start query

+                writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagQuery, AtomPubConstants.NamespaceCMIS);

+                writer.WriteAttributeString("xmlns", AtomWriter.PrefixAtom, null, AtomPubConstants.NamespaceAtom);

+                writer.WriteAttributeString("xmlns", AtomWriter.PrefixCMIS, null, AtomPubConstants.NamespaceCMIS);

+                writer.WriteAttributeString("xmlns", AtomWriter.PrefixRestAtom, null, AtomPubConstants.NamespaceRestAtom);

+

+                // cmis:statement

+                writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagStatement, AtomPubConstants.NamespaceCMIS);

+                writer.WriteString(statement);

+                writer.WriteEndElement();

+

+                // cmis:searchAllVersions

+                if (searchAllVersions.HasValue)

+                {

+                    writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagSearchAllVersions, AtomPubConstants.NamespaceCMIS);

+                    writer.WriteString(searchAllVersions.Value ? "true" : "false");

+                    writer.WriteEndElement();

+                }

+

+                // cmis:includeAllowableActions

+                if (includeAllowableActions.HasValue)

+                {

+                    writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagIncludeAllowableActions, AtomPubConstants.NamespaceCMIS);

+                    writer.WriteString(includeAllowableActions.Value ? "true" : "false");

+                    writer.WriteEndElement();

+                }

+

+                // cmis:includeRelationships

+                if (includeRelationships.HasValue)

+                {

+                    writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagIncludeRelationships, AtomPubConstants.NamespaceCMIS);

+                    writer.WriteString(includeRelationships.GetCmisValue());

+                    writer.WriteEndElement();

+                }

+

+                // cmis:renditionFilter

+                if (renditionFilter != null)

+                {

+                    writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagRenditionFilter, AtomPubConstants.NamespaceCMIS);

+                    writer.WriteString(renditionFilter);

+                    writer.WriteEndElement();

+                }

+

+                // cmis:maxItems

+                if (maxItems.HasValue)

+                {

+                    writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagMaxItems, AtomPubConstants.NamespaceCMIS);

+                    writer.WriteString(maxItems.ToString());

+                    writer.WriteEndElement();

+                }

+

+                // cmis:skipCount

+                if (skipCount.HasValue)

+                {

+                    writer.WriteStartElement(AtomWriter.PrefixCMIS, AtomPubConstants.TagSkipCount, AtomPubConstants.NamespaceCMIS);

+                    writer.WriteString(skipCount.ToString());

+                    writer.WriteEndElement();

+                }

+

+                // end query

+                writer.WriteEndElement();

+

+                // end document

+                writer.WriteEndDocument();

+

+                writer.Flush();

+            }

+        }

+    }

+}

diff --git a/DotCMIS/binding/atompub/atompub.cs b/DotCMIS/binding/atompub/atompub.cs
new file mode 100644
index 0000000..a26f66d
--- /dev/null
+++ b/DotCMIS/binding/atompub/atompub.cs
@@ -0,0 +1,2818 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.IO;

+using System.Net;

+using DotCMIS.Binding.Impl;

+using DotCMIS.Binding.Services;

+using DotCMIS.CMISWebServicesReference;

+using DotCMIS.Data;

+using DotCMIS.Data.Extensions;

+using DotCMIS.Exceptions;

+using DotCMIS.Enums;

+

+namespace DotCMIS.Binding.AtomPub

+{

+    /// <summary>

+    /// AtomPub binding SPI.

+    /// </summary>

+    internal class CmisAtomPubSpi : ICmisSpi

+    {

+        private RepositoryService repositoryService;

+        private NavigationService navigationService;

+        private ObjectService objectService;

+        private VersioningService versioningService;

+        private DiscoveryService discoveryService;

+        private MultiFilingService multiFilingService;

+        private RelationshipService relationshipService;

+        private PolicyService policyService;

+        private AclService aclService;

+

+        public void initialize(BindingSession session)

+        {

+            repositoryService = new RepositoryService(session);

+            navigationService = new NavigationService(session);

+            objectService = new ObjectService(session);

+            versioningService = new VersioningService(session);

+            discoveryService = new DiscoveryService(session);

+            multiFilingService = new MultiFilingService(session);

+            relationshipService = new RelationshipService(session);

+            policyService = new PolicyService(session);

+            aclService = new AclService(session);

+        }

+

+        public IRepositoryService GetRepositoryService()

+        {

+            return repositoryService;

+        }

+

+        public INavigationService GetNavigationService()

+        {

+            return navigationService;

+        }

+

+        public IObjectService GetObjectService()

+        {

+            return objectService;

+        }

+

+        public IVersioningService GetVersioningService()

+        {

+            return versioningService;

+        }

+

+        public IRelationshipService GetRelationshipService()

+        {

+            return relationshipService;

+        }

+

+        public IDiscoveryService GetDiscoveryService()

+        {

+            return discoveryService;

+        }

+

+        public IMultiFilingService GetMultiFilingService()

+        {

+            return multiFilingService;

+        }

+

+        public IAclService GetAclService()

+        {

+            return aclService;

+        }

+

+        public IPolicyService GetPolicyService()

+        {

+            return policyService;

+        }

+

+        public void ClearAllCaches()

+        {

+            // nothing to do

+        }

+

+        public void ClearRepositoryCache(string repositoryId)

+        {

+            // nothing to do

+        }

+

+        public void Close()

+        {

+            // nothing to do

+        }

+    }

+

+    internal abstract class AbstractAtomPubService

+    {

+        protected const string NameCollection = "collection";

+        protected const string NameURITemplate = "uritemplate";

+        protected const string NamePathSegment = "pathSegment";

+        protected const string NameRelativePathSegment = "relativePathSegment";

+        protected const string NameNumItems = "numItems";

+

+        private const string SessionLinkCache = "org.apache.chemistry.dotcmis.binding.atompub.linkcache";

+

+        protected enum IdentifierType

+        {

+            Id, Path

+        };

+

+        protected BindingSession Session { get; set; }

+

+

+        // ---- link cache ----

+

+        protected LinkCache GetLinkCache()

+        {

+            LinkCache linkCache = (LinkCache)Session.GetValue(SessionLinkCache);

+            if (linkCache == null)

+            {

+                linkCache = new LinkCache(Session);

+                Session.PutValue(SessionLinkCache, linkCache);

+            }

+

+            return linkCache;

+        }

+

+        protected string GetLink(string repositoryId, string id, string rel, string type)

+        {

+            if (repositoryId == null)

+            {

+                throw new CmisInvalidArgumentException("Repository id must be set!");

+            }

+

+            if (id == null)

+            {

+                throw new CmisInvalidArgumentException("Object id must be set!");

+            }

+

+            return GetLinkCache().GetLink(repositoryId, id, rel, type);

+        }

+

+        protected string GetLink(string repositoryId, string id, string rel)

+        {

+            return GetLink(repositoryId, id, rel, null);

+        }

+

+        protected string LoadLink(string repositoryId, string id, string rel, string type)

+        {

+            string link = GetLink(repositoryId, id, rel, type);

+            if (link == null)

+            {

+                GetObjectInternal(repositoryId, IdentifierType.Id, id, ReturnVersion.This, null, null, null, null, null, null, null);

+                link = GetLink(repositoryId, id, rel, type);

+            }

+

+            return link;

+        }

+

+        protected void AddLink(string repositoryId, string id, string rel, string type, string link)

+        {

+            GetLinkCache().AddLink(repositoryId, id, rel, type, link);

+        }

+

+        protected void AddLink(string repositoryId, string id, AtomLink link)

+        {

+            GetLinkCache().AddLink(repositoryId, id, link.Rel, link.Type, link.Href);

+        }

+

+        protected void RemoveLinks(string repositoryId, string id)

+        {

+            GetLinkCache().RemoveLinks(repositoryId, id);

+        }

+

+        protected void LockLinks()

+        {

+            GetLinkCache().LockLinks();

+        }

+

+        protected void UnlockLinks()

+        {

+            GetLinkCache().UnlockLinks();

+        }

+

+        protected string GetTypeLink(string repositoryId, string typeId, string rel, string type)

+        {

+            if (repositoryId == null)

+            {

+                throw new CmisInvalidArgumentException("Repository id must be set!");

+            }

+

+            if (typeId == null)

+            {

+                throw new CmisInvalidArgumentException("Type id must be set!");

+            }

+

+            return GetLinkCache().GetTypeLink(repositoryId, typeId, rel, type);

+        }

+

+        protected string GetTypeLink(string repositoryId, string typeId, string rel)

+        {

+            return GetTypeLink(repositoryId, typeId, rel, null);

+        }

+

+        protected string LoadTypeLink(string repositoryId, string typeId, string rel, string type)

+        {

+            string link = GetTypeLink(repositoryId, typeId, rel, type);

+            if (link == null)

+            {

+                GetTypeDefinitionInternal(repositoryId, typeId);

+                link = GetTypeLink(repositoryId, typeId, rel, type);

+            }

+

+            return link;

+        }

+

+        protected void AddTypeLink(string repositoryId, string typeId, string rel, string type, string link)

+        {

+            GetLinkCache().AddTypeLink(repositoryId, typeId, rel, type, link);

+        }

+

+        protected void AddTypeLink(string repositoryId, string typeId, AtomLink link)

+        {

+            GetLinkCache().AddTypeLink(repositoryId, typeId, link.Rel, link.Type, link.Href);

+        }

+

+        protected void RemoveTypeLinks(string repositoryId, string id)

+        {

+            GetLinkCache().RemoveTypeLinks(repositoryId, id);

+        }

+

+        protected void LockTypeLinks()

+        {

+            GetLinkCache().LockTypeLinks();

+        }

+

+        protected void UnlockTypeLinks()

+        {

+            GetLinkCache().UnlockTypeLinks();

+        }

+

+        protected string GetCollection(string repositoryId, string collection)

+        {

+            return GetLinkCache().GetCollection(repositoryId, collection);

+        }

+

+        protected string LoadCollection(string repositoryId, string collection)

+        {

+            string link = GetCollection(repositoryId, collection);

+            if (link == null)

+            {

+                GetRepositoriesInternal(repositoryId);

+                link = GetCollection(repositoryId, collection);

+            }

+

+            return link;

+        }

+

+        protected void AddCollection(string repositoryId, string collection, string link)

+        {

+            GetLinkCache().AddCollection(repositoryId, collection, link);

+        }

+

+        protected void AddCollection(string repositoryId, IDictionary<string, string> colDict)

+        {

+            string collection = null;

+            colDict.TryGetValue("collectionType", out collection);

+

+            string link = null;

+            colDict.TryGetValue("href", out link);

+

+            AddCollection(repositoryId, collection, link);

+        }

+

+        protected string GetRepositoryLink(string repositoryId, string rel)

+        {

+            return GetLinkCache().GetRepositoryLink(repositoryId, rel);

+        }

+

+        protected string LoadRepositoryLink(string repositoryId, string rel)

+        {

+            string link = GetRepositoryLink(repositoryId, rel);

+            if (link == null)

+            {

+                GetRepositoriesInternal(repositoryId);

+                link = GetRepositoryLink(repositoryId, rel);

+            }

+

+            return link;

+        }

+

+        protected void AddRepositoryLink(string repositoryId, string rel, string link)

+        {

+            GetLinkCache().AddRepositoryLink(repositoryId, rel, link);

+        }

+

+        protected void AddRepositoryLink(string repositoryId, AtomLink link)

+        {

+            AddRepositoryLink(repositoryId, link.Rel, link.Href);

+        }

+

+        protected string GetTemplateLink(string repositoryId, string type, IDictionary<string, object> parameters)

+        {

+            return GetLinkCache().GetTemplateLink(repositoryId, type, parameters);

+        }

+

+        protected string LoadTemplateLink(string repositoryId, string type, IDictionary<string, object> parameters)

+        {

+            string link = GetTemplateLink(repositoryId, type, parameters);

+            if (link == null)

+            {

+                GetRepositoriesInternal(repositoryId);

+                link = GetTemplateLink(repositoryId, type, parameters);

+            }

+

+            return link;

+        }

+

+        protected void AddTemplate(string repositoryId, string type, string link)

+        {

+            GetLinkCache().AddTemplate(repositoryId, type, link);

+        }

+

+        protected void AddTemplate(string repositoryId, IDictionary<string, string> tempDict)

+        {

+            string type = null;

+            tempDict.TryGetValue("type", out type);

+

+            string template = null;

+            tempDict.TryGetValue("template", out template);

+

+            AddTemplate(repositoryId, type, template);

+        }

+

+        // ---- exceptions ----

+

+        protected CmisBaseException ConvertStatusCode(HttpStatusCode code, string message, string errorContent, Exception e)

+        {

+            switch (code)

+            {

+                case HttpStatusCode.BadRequest:

+                    return new CmisInvalidArgumentException(message, errorContent, e);

+                case HttpStatusCode.NotFound:

+                    return new CmisObjectNotFoundException(message, errorContent, e);

+                case HttpStatusCode.Forbidden:

+                    return new CmisPermissionDeniedException(message, errorContent, e);

+                case HttpStatusCode.MethodNotAllowed:

+                    return new CmisNotSupportedException(message, errorContent, e);

+                case HttpStatusCode.Conflict:

+                    return new CmisConstraintException(message, errorContent, e);

+                default:

+                    return new CmisRuntimeException(message, errorContent, e);

+            }

+        }

+

+        protected void ThrowLinkException(String repositoryId, String id, String rel, String type)

+        {

+            int index = GetLinkCache().CheckLink(repositoryId, id, rel, type);

+

+            switch (index)

+            {

+                case 0:

+                    throw new CmisObjectNotFoundException("Unknown repository!");

+                case 1:

+                    throw new CmisObjectNotFoundException("Unknown object!");

+                case 2:

+                    throw new CmisNotSupportedException("Operation not supported by the repository for this object!");

+                case 3:

+                    throw new CmisNotSupportedException("No link with matching media type!");

+                case 4:

+                    throw new CmisRuntimeException("Nothing wrong! Either this is a bug or threading issue.");

+                default:

+                    throw new CmisRuntimeException("Unknown error!");

+            }

+        }

+

+        // ---- helpers ----

+

+        protected T Parse<T>(Stream stream) where T : AtomBase

+        {

+            AtomPubParser parser = new AtomPubParser(stream);

+

+            try

+            {

+                parser.Parse();

+            }

+            catch (Exception e)

+            {

+                throw new CmisConnectionException("Parsing exception!", e);

+            }

+

+            AtomBase parseResult = parser.GetParseResults();

+

+            if (!typeof(T).IsInstanceOfType(parseResult))

+            {

+                throw new CmisConnectionException("Unexpected document! Received "

+                        + (parseResult == null ? "something unknown" : parseResult.GetAtomType()) + "!");

+            }

+

+            return (T)parseResult;

+        }

+

+        protected HttpUtils.Response Read(UrlBuilder url)

+        {

+            HttpUtils.Response resp = HttpUtils.InvokeGET(url, Session);

+

+            if (resp.StatusCode != HttpStatusCode.OK)

+            {

+                throw ConvertStatusCode(resp.StatusCode, resp.Message, resp.ErrorContent, null);

+            }

+

+            return resp;

+        }

+

+        protected HttpUtils.Response Post(UrlBuilder url, string contentType, HttpUtils.Output writer)

+        {

+            HttpUtils.Response resp = HttpUtils.InvokePOST(url, contentType, writer, Session);

+

+            if (resp.StatusCode != HttpStatusCode.Created)

+            {

+                throw ConvertStatusCode(resp.StatusCode, resp.Message, resp.ErrorContent, null);

+            }

+

+            return resp;

+        }

+

+        protected HttpUtils.Response Put(UrlBuilder url, string contentType, HttpUtils.Output writer)

+        {

+            HttpUtils.Response resp = HttpUtils.InvokePUT(url, contentType, writer, Session);

+

+            if ((int)resp.StatusCode < 200 || (int)resp.StatusCode > 299)

+            {

+                throw ConvertStatusCode(resp.StatusCode, resp.Message, resp.ErrorContent, null);

+            }

+

+            return resp;

+        }

+

+        protected void Delete(UrlBuilder url)

+        {

+            HttpUtils.Response resp = HttpUtils.InvokeDELETE(url, Session);

+

+            if (resp.StatusCode != HttpStatusCode.NoContent)

+            {

+                throw ConvertStatusCode(resp.StatusCode, resp.Message, resp.ErrorContent, null);

+            }

+        }

+

+        protected string GetServiceDocURL()

+        {

+            return Session.GetValue(SessionParameter.AtomPubUrl) as string;

+        }

+

+        protected bool IsNextLink(AtomElement element)

+        {

+            return AtomPubConstants.RelNext == ((AtomLink)element.Object).Rel;

+        }

+

+        protected bool IsStr(string name, AtomElement element)

+        {

+            return name == element.LocalName && element.Object is string;

+        }

+

+        protected bool IsInt(string name, AtomElement element)

+        {

+            return name == element.LocalName && element.Object is Int64;

+        }

+

+        // ---- common methods ----

+

+        protected cmisObjectType CreateIdObject(string objectId)

+        {

+            cmisObjectType cmisObject = new cmisObjectType();

+

+            cmisPropertiesType properties = new cmisPropertiesType();

+            cmisObject.properties = properties;

+

+            cmisPropertyId idProperty = new cmisPropertyId();

+            properties.Items = new cmisProperty[] { idProperty };

+            idProperty.propertyDefinitionId = PropertyIds.ObjectId;

+            idProperty.value = new string[] { objectId };

+

+            return cmisObject;

+        }

+

+        protected bool IsAclMergeRequired(IAcl addAces, IAcl removeAces)

+        {

+            return (addAces != null && addAces.Aces != null && addAces.Aces.Count > 0)

+                    || (removeAces != null && removeAces.Aces != null && removeAces.Aces.Count > 0);

+        }

+

+        protected IAcl MergeAcls(IAcl originalAces, IAcl addAces, IAcl removeAces)

+        {

+            IDictionary<string, HashSet<string>> originals = ConvertAclToDict(originalAces);

+            IDictionary<string, HashSet<string>> adds = ConvertAclToDict(addAces);

+            IDictionary<string, HashSet<string>> removes = ConvertAclToDict(removeAces);

+            IList<IAce> newACEs = new List<IAce>();

+

+            // iterate through the original ACEs

+            foreach (KeyValuePair<string, HashSet<string>> ace in originals)

+            {

+                // add permissions

+                HashSet<string> addPermissions = adds[ace.Key];

+                if (addPermissions != null)

+                {

+                    foreach (string perm in addPermissions)

+                    {

+                        ace.Value.Add(perm);

+                    }

+                }

+

+                // remove permissions

+                HashSet<string> removePermissions = removes[ace.Key];

+                if (removePermissions != null)

+                {

+                    foreach (string perm in removePermissions)

+                    {

+                        ace.Value.Remove(perm);

+                    }

+                }

+

+                // create new ACE

+                Ace resultAce = new Ace();

+                Principal resultPrincipal = new Principal();

+                resultPrincipal.Id = ace.Key;

+                resultAce.Principal = resultPrincipal;

+                resultAce.Permissions = new List<string>(ace.Value);

+

+                newACEs.Add(resultAce);

+            }

+

+            // find all ACEs that should be added but are not in the original ACE list

+            foreach (KeyValuePair<string, HashSet<string>> ace in adds)

+            {

+                if (!originals.ContainsKey(ace.Key) && ace.Value.Count > 0)

+                {

+                    Ace resultAce = new Ace();

+                    Principal resultPrincipal = new Principal();

+                    resultPrincipal.Id = ace.Key;

+                    resultAce.Principal = resultPrincipal;

+                    resultAce.Permissions = new List<string>(ace.Value);

+

+                    newACEs.Add(resultAce);

+                }

+            }

+

+            Acl result = new Acl();

+            result.Aces = newACEs;

+

+            return result;

+        }

+

+        private IDictionary<string, HashSet<string>> ConvertAclToDict(IAcl acl)

+        {

+            IDictionary<string, HashSet<string>> result = new Dictionary<string, HashSet<string>>();

+

+            if (acl == null || acl.Aces == null)

+            {

+                return result;

+            }

+

+            foreach (Ace ace in acl.Aces)

+            {

+                // don't consider indirect ACEs - we can't change them

+                if (!ace.IsDirect)

+                {

+                    // ignore

+                    continue;

+                }

+

+                // although a principal must not be null, check it

+                if ((ace.Principal == null) || (ace.Principal.Id == null))

+                {

+                    // ignore

+                    continue;

+                }

+

+                if (ace.Permissions == null)

+                {

+                    continue;

+                }

+

+                HashSet<string> permissions;

+                if (!result.TryGetValue(ace.Principal.Id, out permissions))

+                {

+                    permissions = new HashSet<string>();

+                    result[ace.Principal.Id] = permissions;

+                }

+

+                foreach (string perm in ace.Permissions)

+                {

+                    permissions.Add(perm);

+                }

+            }

+

+            return result;

+        }

+

+

+        protected AtomAcl UpdateAcl(string repositoryId, string objectId, IAcl acl, AclPropagation? aclPropagation)

+        {

+            // find the link

+            String link = LoadLink(repositoryId, objectId, AtomPubConstants.RelACL, AtomPubConstants.MediatypeACL);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelACL, AtomPubConstants.MediatypeACL);

+            }

+

+            UrlBuilder aclUrl = new UrlBuilder(link);

+            aclUrl.AddParameter(AtomPubConstants.ParamACLPropagation, aclPropagation);

+

+            // set up object and writer

+            cmisAccessControlListType cmisAcl = Converter.Convert(acl);

+            HttpUtils.Output output = delegate(Stream stream)

+            {

+                AtomWriter.AclSerializer.Serialize(stream, cmisAcl);

+            };

+

+            // update

+            HttpUtils.Response resp = Put(aclUrl, AtomPubConstants.MediatypeACL, output);

+

+            // parse new acl

+            return Parse<AtomAcl>(resp.Stream);

+        }

+

+        protected IList<IRepositoryInfo> GetRepositoriesInternal(string repositoryId)

+        {

+            IList<IRepositoryInfo> repInfos = new List<IRepositoryInfo>();

+

+            // retrieve service doc

+            UrlBuilder url = new UrlBuilder(GetServiceDocURL());

+            url.AddParameter(AtomPubConstants.ParamRepositoryId, repositoryId);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            ServiceDoc serviceDoc = Parse<ServiceDoc>(resp.Stream);

+

+            // walk through the workspaces

+            foreach (RepositoryWorkspace ws in serviceDoc.GetWorkspaces())

+            {

+                if (ws.Id == null)

+                {

+                    // found a non-CMIS workspace

+                    continue;

+                }

+

+                foreach (AtomElement element in ws.GetElements())

+                {

+                    if (element.LocalName == NameCollection)

+                    {

+                        AddCollection(ws.Id, (IDictionary<string, string>)element.Object);

+                    }

+                    else if (element.Object is AtomLink)

+                    {

+                        AddRepositoryLink(ws.Id, (AtomLink)element.Object);

+                    }

+                    else if (element.LocalName == NameURITemplate)

+                    {

+                        AddTemplate(ws.Id, (IDictionary<string, string>)element.Object);

+                    }

+                    else if (element.Object is cmisRepositoryInfoType)

+                    {

+                        repInfos.Add(Converter.Convert((cmisRepositoryInfoType)element.Object));

+                    }

+                }

+            }

+

+            return repInfos;

+        }

+

+        protected IObjectData GetObjectInternal(string repositoryId, IdentifierType idOrPath, string objectIdOrPath,

+            ReturnVersion? returnVersion, string filter, bool? includeAllowableActions, IncludeRelationships? includeRelationships,

+            string renditionFilter, bool? includePolicyIds, bool? includeAcl, IExtensionsData extension)

+        {

+            IObjectData result = null;

+

+            Dictionary<string, object> parameters = new Dictionary<string, object>();

+            parameters[AtomPubConstants.ParamId] = objectIdOrPath;

+            parameters[AtomPubConstants.ParamPath] = objectIdOrPath;

+            parameters[AtomPubConstants.ParamReturnVersion] = returnVersion;

+            parameters[AtomPubConstants.ParamFilter] = filter;

+            parameters[AtomPubConstants.ParamAllowableActions] = includeAllowableActions;

+            parameters[AtomPubConstants.ParamACL] = includeAcl;

+            parameters[AtomPubConstants.ParamPolicyIds] = includePolicyIds;

+            parameters[AtomPubConstants.ParamRelationships] = includeRelationships;

+            parameters[AtomPubConstants.ParamRenditionFilter] = renditionFilter;

+

+            string link = LoadTemplateLink(repositoryId, (idOrPath == IdentifierType.Id ? AtomPubConstants.TemplateObjectById

+                    : AtomPubConstants.TemplateObjectByPath), parameters);

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            // workaround for missing template parameter in the CMIS spec

+            if ((returnVersion != null) && (returnVersion != ReturnVersion.This))

+            {

+                url.AddParameter(AtomPubConstants.ParamReturnVersion, returnVersion);

+            }

+

+            HttpUtils.Response resp = Read(url);

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            if (entry.Id == null)

+            {

+                throw new CmisConnectionException("Received Atom entry is not a CMIS entry!");

+            }

+

+            LockLinks();

+            try

+            {

+                RemoveLinks(repositoryId, entry.Id);

+

+                foreach (AtomElement element in entry.GetElements())

+                {

+                    if (element.Object is AtomLink)

+                    {

+                        AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                    }

+                    else if (element.Object is cmisObjectType)

+                    {

+                        result = Converter.Convert((cmisObjectType)element.Object);

+                    }

+                }

+            }

+            finally

+            {

+                UnlockLinks();

+            }

+

+            return result;

+        }

+

+        protected ITypeDefinition GetTypeDefinitionInternal(string repositoryId, string typeId)

+        {

+            ITypeDefinition result = null;

+

+            Dictionary<string, object> parameters = new Dictionary<string, object>();

+            parameters[AtomPubConstants.ParamId] = typeId;

+

+            string link = LoadTemplateLink(repositoryId, AtomPubConstants.TemplateTypeById, parameters);

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository!");

+            }

+

+            // read and parse

+            HttpUtils.Response resp = Read(new UrlBuilder(link));

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            // we expect a CMIS entry

+            if (entry.Id == null)

+            {

+                throw new CmisConnectionException("Received Atom entry is not a CMIS entry!");

+            }

+

+            LockTypeLinks();

+            try

+            {

+                // clean up cache

+                RemoveTypeLinks(repositoryId, entry.Id);

+

+                // walk through the entry

+                foreach (AtomElement element in entry.GetElements())

+                {

+                    if (element.Object is AtomLink)

+                    {

+                        AddTypeLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                    }

+                    else if (element.Object is cmisTypeDefinitionType)

+                    {

+                        result = Converter.Convert((cmisTypeDefinitionType)element.Object);

+                    }

+                }

+            }

+            finally

+            {

+                UnlockTypeLinks();

+            }

+

+            return result;

+        }

+    }

+

+    internal class RepositoryService : AbstractAtomPubService, IRepositoryService

+    {

+        public RepositoryService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public IList<IRepositoryInfo> GetRepositoryInfos(IExtensionsData extension)

+        {

+            return GetRepositoriesInternal(null);

+        }

+

+        public IRepositoryInfo GetRepositoryInfo(string repositoryId, IExtensionsData extension)

+        {

+            IList<IRepositoryInfo> repositoryInfos = GetRepositoriesInternal(repositoryId);

+

+            // find the repository

+            foreach (IRepositoryInfo info in repositoryInfos)

+            {

+                if (info.Id == null) { continue; }

+                if (info.Id == repositoryId) { return info; }

+            }

+

+            throw new CmisObjectNotFoundException("Repository not found!");

+        }

+

+        public ITypeDefinitionList GetTypeChildren(string repositoryId, string typeId, bool? includePropertyDefinitions,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            TypeDefinitionList result = new TypeDefinitionList();

+

+            // find the link

+            string link = null;

+            if (typeId == null)

+            {

+                link = LoadCollection(repositoryId, AtomPubConstants.CollectionTypes);

+            }

+            else

+            {

+                link = LoadTypeLink(repositoryId, typeId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+            }

+

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository or type!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamTypeId, typeId);

+            url.AddParameter(AtomPubConstants.ParamPropertyDefinitions, includePropertyDefinitions);

+            url.AddParameter(AtomPubConstants.ParamMaxItems, maxItems);

+            url.AddParameter(AtomPubConstants.ParamSkipCount, skipCount);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // handle top level

+            foreach (AtomElement element in feed.GetElements())

+            {

+                if (element.Object is AtomLink)

+                {

+                    if (IsNextLink(element)) { result.HasMoreItems = true; }

+                }

+                else if (IsInt(NameNumItems, element))

+                {

+                    result.NumItems = (long)element.Object;

+                }

+            }

+

+            result.List = new List<ITypeDefinition>(feed.GetEntries().Count);

+

+            // get the children

+            foreach (AtomEntry entry in feed.GetEntries())

+            {

+                ITypeDefinition child = null;

+

+                LockTypeLinks();

+                try

+                {

+                    foreach (AtomElement element in entry.GetElements())

+                    {

+                        if (element.Object is AtomLink)

+                        {

+                            AddTypeLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                        }

+                        else if (element.Object is cmisTypeDefinitionType)

+                        {

+                            child = Converter.Convert((cmisTypeDefinitionType)element.Object);

+                        }

+                    }

+                }

+                finally

+                {

+                    UnlockTypeLinks();

+                }

+

+                if (child != null)

+                {

+                    result.List.Add(child);

+                }

+            }

+

+            return result;

+        }

+

+        public IList<ITypeDefinitionContainer> GetTypeDescendants(string repositoryId, string typeId, long? depth,

+            bool? includePropertyDefinitions, IExtensionsData extension)

+        {

+            List<ITypeDefinitionContainer> result = new List<ITypeDefinitionContainer>();

+

+            // find the link

+            string link = null;

+            if (typeId == null)

+            {

+                link = LoadRepositoryLink(repositoryId, AtomPubConstants.RepRelTypeDesc);

+            }

+            else

+            {

+                link = LoadTypeLink(repositoryId, typeId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeDescendants);

+            }

+

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository or type!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamTypeId, typeId);

+            url.AddParameter(AtomPubConstants.ParamDepth, depth);

+            url.AddParameter(AtomPubConstants.ParamPropertyDefinitions, includePropertyDefinitions);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // process tree

+            AddTypeDescendantsLevel(repositoryId, feed, result);

+

+            return result;

+        }

+

+        private void AddTypeDescendantsLevel(string repositoryId, AtomFeed feed, List<ITypeDefinitionContainer> containerList)

+        {

+            if (feed == null || feed.GetEntries().Count == 0)

+            {

+                return;

+            }

+

+            foreach (AtomEntry entry in feed.GetEntries())

+            {

+                TypeDefinitionContainer childContainer = null;

+                List<ITypeDefinitionContainer> childContainerList = new List<ITypeDefinitionContainer>();

+

+                // walk through the entry

+                LockTypeLinks();

+                try

+                {

+                    foreach (AtomElement element in entry.GetElements())

+                    {

+                        if (element.Object is AtomLink)

+                        {

+                            AddTypeLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                        }

+                        else if (element.Object is cmisTypeDefinitionType)

+                        {

+                            childContainer = new TypeDefinitionContainer();

+                            childContainer.TypeDefinition = Converter.Convert((cmisTypeDefinitionType)element.Object);

+                        }

+                        else if (element.Object is AtomFeed)

+                        {

+                            AddTypeDescendantsLevel(repositoryId, (AtomFeed)element.Object, childContainerList);

+                        }

+                    }

+                }

+                finally

+                {

+                    UnlockTypeLinks();

+                }

+

+                if (childContainer != null)

+                {

+                    childContainer.Children = childContainerList;

+                    containerList.Add(childContainer);

+                }

+            }

+        }

+

+        public ITypeDefinition GetTypeDefinition(string repositoryId, string typeId, IExtensionsData extension)

+        {

+            return GetTypeDefinitionInternal(repositoryId, typeId);

+        }

+    }

+

+    internal class NavigationService : AbstractAtomPubService, INavigationService

+    {

+        public NavigationService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public IObjectInFolderList GetChildren(string repositoryId, string folderId, string filter, string orderBy,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            ObjectInFolderList result = new ObjectInFolderList();

+

+            // find the link

+            String link = LoadLink(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamOrderBy, orderBy);

+            url.AddParameter(AtomPubConstants.ParamAllowableActions, includeAllowableActions);

+            url.AddParameter(AtomPubConstants.ParamRelationships, includeRelationships);

+            url.AddParameter(AtomPubConstants.ParamRenditionFilter, renditionFilter);

+            url.AddParameter(AtomPubConstants.ParamPathSegment, includePathSegment);

+            url.AddParameter(AtomPubConstants.ParamMaxItems, maxItems);

+            url.AddParameter(AtomPubConstants.ParamSkipCount, skipCount);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // handle top level

+            foreach (AtomElement element in feed.GetElements())

+            {

+                if (element.Object is AtomLink)

+                {

+                    if (IsNextLink(element)) { result.HasMoreItems = true; }

+                }

+                else if (IsInt(NameNumItems, element))

+                {

+                    result.NumItems = (long)element.Object;

+                }

+            }

+

+            // get the children

+            if (feed.GetEntries().Count > 0)

+            {

+                result.Objects = new List<IObjectInFolderData>(feed.GetEntries().Count);

+

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    ObjectInFolderData child = null;

+                    String pathSegment = null;

+

+                    LockLinks();

+                    try

+                    {

+                        // clean up cache

+                        RemoveLinks(repositoryId, entry.Id);

+

+                        // walk through the entry

+                        foreach (AtomElement element in entry.GetElements())

+                        {

+                            if (element.Object is AtomLink)

+                            {

+                                AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                            }

+                            else if (IsStr(NamePathSegment, element))

+                            {

+                                pathSegment = (string)element.Object;

+                            }

+                            else if (element.Object is cmisObjectType)

+                            {

+                                child = new ObjectInFolderData();

+                                child.Object = Converter.Convert((cmisObjectType)element.Object);

+                            }

+                        }

+                    }

+                    finally

+                    {

+                        UnlockLinks();

+                    }

+

+                    if (child != null)

+                    {

+                        child.PathSegment = pathSegment;

+                        result.Objects.Add(child);

+                    }

+                }

+            }

+

+            return result;

+        }

+

+        public IList<IObjectInFolderContainer> GetDescendants(string repositoryId, string folderId, long? depth, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, IExtensionsData extension)

+        {

+            IList<IObjectInFolderContainer> result = new List<IObjectInFolderContainer>();

+

+            // find the link

+            String link = LoadLink(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeDescendants);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeDescendants);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamDepth, depth);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamAllowableActions, includeAllowableActions);

+            url.AddParameter(AtomPubConstants.ParamRelationships, includeRelationships);

+            url.AddParameter(AtomPubConstants.ParamRenditionFilter, renditionFilter);

+            url.AddParameter(AtomPubConstants.ParamPathSegment, includePathSegment);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // process tree

+            AddDescendantsLevel(repositoryId, feed, result);

+

+            return result;

+        }

+

+        public IList<IObjectInFolderContainer> GetFolderTree(string repositoryId, string folderId, long? depth, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, IExtensionsData extension)

+        {

+            IList<IObjectInFolderContainer> result = new List<IObjectInFolderContainer>();

+

+            // find the link

+            string link = LoadLink(repositoryId, folderId, AtomPubConstants.RelFolderTree, AtomPubConstants.MediatypeDescendants);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelFolderTree, AtomPubConstants.MediatypeDescendants);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamDepth, depth);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamAllowableActions, includeAllowableActions);

+            url.AddParameter(AtomPubConstants.ParamRelationships, includeRelationships);

+            url.AddParameter(AtomPubConstants.ParamRenditionFilter, renditionFilter);

+            url.AddParameter(AtomPubConstants.ParamPathSegment, includePathSegment);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // process tree

+            AddDescendantsLevel(repositoryId, feed, result);

+

+            return result;

+        }

+

+        public IList<IObjectParentData> GetObjectParents(string repositoryId, string objectId, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includeRelativePathSegment, IExtensionsData extension)

+        {

+            IList<IObjectParentData> result = new List<IObjectParentData>();

+

+            // find the link

+            String link = LoadLink(repositoryId, objectId, AtomPubConstants.RelUp, AtomPubConstants.MediatypeFeed);

+

+            if (link == null)

+            {

+                // root and unfiled objects have no UP link

+                return result;

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamAllowableActions, includeAllowableActions);

+            url.AddParameter(AtomPubConstants.ParamRelationships, includeRelationships);

+            url.AddParameter(AtomPubConstants.ParamRenditionFilter, renditionFilter);

+            url.AddParameter(AtomPubConstants.ParamRelativePathSegment, includeRelativePathSegment);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomBase atomBase = Parse<AtomBase>(resp.Stream);

+

+            if (atomBase is AtomFeed)

+            {

+                // it's a feed

+                AtomFeed feed = (AtomFeed)atomBase;

+

+                // walk through the feed

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    IObjectParentData objectParent = ProcessParentEntry(entry, repositoryId);

+

+                    if (objectParent != null)

+                    {

+                        result.Add(objectParent);

+                    }

+                }

+            }

+            else if (atomBase is AtomEntry)

+            {

+                // it's an entry

+                AtomEntry entry = (AtomEntry)atomBase;

+

+                IObjectParentData objectParent = ProcessParentEntry(entry, repositoryId);

+

+                if (objectParent != null)

+                {

+                    result.Add(objectParent);

+                }

+            }

+

+            return result;

+        }

+

+        private IObjectParentData ProcessParentEntry(AtomEntry entry, string repositoryId)

+        {

+            ObjectParentData result = null;

+            String relativePathSegment = null;

+

+            LockLinks();

+            try

+            {

+                // clean up cache

+                RemoveLinks(repositoryId, entry.Id);

+

+                // walk through the entry

+                foreach (AtomElement element in entry.GetElements())

+                {

+                    if (element.Object is AtomLink)

+                    {

+                        AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                    }

+                    else if (element.Object is cmisObjectType)

+                    {

+                        result = new ObjectParentData();

+                        result.Object = Converter.Convert((cmisObjectType)element.Object);

+                    }

+                    else if (IsStr(NameRelativePathSegment, element))

+                    {

+                        relativePathSegment = (string)element.Object;

+                    }

+                }

+            }

+            finally

+            {

+                UnlockLinks();

+            }

+

+            if (result != null)

+            {

+                result.RelativePathSegment = relativePathSegment;

+            }

+

+            return result;

+        }

+

+        public IObjectData GetFolderParent(string repositoryId, string folderId, string filter, ExtensionsData extension)

+        {

+            IObjectData result = null;

+

+            // find the link

+            String link = LoadLink(repositoryId, folderId, AtomPubConstants.RelUp, AtomPubConstants.MediatypeEntry);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelUp, AtomPubConstants.MediatypeEntry);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+

+            // read

+            HttpUtils.Response resp = Read(url);

+            AtomBase atomBase = Parse<AtomBase>(resp.Stream);

+

+            // get the entry

+            AtomEntry entry = null;

+            if (atomBase is AtomFeed)

+            {

+                AtomFeed feed = (AtomFeed)atomBase;

+                if (feed.GetEntries().Count == 0)

+                {

+                    throw new CmisRuntimeException("Parent feed is empty!");

+                }

+                entry = feed.GetEntries()[0];

+            }

+            else if (atomBase is AtomEntry)

+            {

+                entry = (AtomEntry)atomBase;

+            }

+            else

+            {

+                throw new CmisRuntimeException("Unexpected document!");

+            }

+

+            LockLinks();

+            try

+            {

+                // clean up cache

+                RemoveLinks(repositoryId, entry.Id);

+

+                // walk through the entry

+                foreach (AtomElement element in entry.GetElements())

+                {

+                    if (element.Object is AtomLink)

+                    {

+                        AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                    }

+                    else if (element.Object is cmisObjectType)

+                    {

+                        result = Converter.Convert((cmisObjectType)element.Object);

+                    }

+                }

+            }

+            finally

+            {

+                UnlockLinks();

+            }

+

+            return result;

+        }

+

+        public IObjectList GetCheckedOutDocs(string repositoryId, string folderId, string filter, string orderBy,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            ObjectList result = new ObjectList();

+

+            // find the link

+            String link = LoadCollection(repositoryId, AtomPubConstants.CollectionCheckedout);

+

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository or checkedout collection not supported!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamFolderId, folderId);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamOrderBy, orderBy);

+            url.AddParameter(AtomPubConstants.ParamAllowableActions, includeAllowableActions);

+            url.AddParameter(AtomPubConstants.ParamRelationships, includeRelationships);

+            url.AddParameter(AtomPubConstants.ParamRenditionFilter, renditionFilter);

+            url.AddParameter(AtomPubConstants.ParamMaxItems, maxItems);

+            url.AddParameter(AtomPubConstants.ParamSkipCount, skipCount);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // handle top level

+            foreach (AtomElement element in feed.GetElements())

+            {

+                if (element.Object is AtomLink)

+                {

+                    if (IsNextLink(element))

+                    {

+                        result.HasMoreItems = true;

+                    }

+                }

+                else if (IsInt(NameNumItems, element))

+                {

+                    result.NumItems = (long)element.Object;

+                }

+            }

+

+            // get the documents

+            if (feed.GetEntries().Count > 0)

+            {

+                result.Objects = new List<IObjectData>(feed.GetEntries().Count);

+

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    IObjectData child = null;

+

+                    LockLinks();

+                    try

+                    {

+                        // clean up cache

+                        RemoveLinks(repositoryId, entry.Id);

+

+                        // walk through the entry

+                        foreach (AtomElement element in entry.GetElements())

+                        {

+                            if (element.Object is AtomLink)

+                            {

+                                AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                            }

+                            else if (element.Object is cmisObjectType)

+                            {

+                                child = Converter.Convert((cmisObjectType)element.Object);

+                            }

+                        }

+                    }

+                    finally

+                    {

+                        UnlockLinks();

+                    }

+

+                    if (child != null)

+                    {

+                        result.Objects.Add(child);

+                    }

+                }

+            }

+

+            return result;

+        }

+

+        private void AddDescendantsLevel(String repositoryId, AtomFeed feed, IList<IObjectInFolderContainer> containerList)

+        {

+            if ((feed == null) || (feed.GetEntries().Count == 0))

+            {

+                return;

+            }

+

+            // walk through the feed

+            foreach (AtomEntry entry in feed.GetEntries())

+            {

+                ObjectInFolderData objectInFolder = null;

+                string pathSegment = null;

+                IList<IObjectInFolderContainer> childContainerList = new List<IObjectInFolderContainer>();

+

+                LockLinks();

+                try

+                {

+                    // clean up cache

+                    RemoveLinks(repositoryId, entry.Id);

+

+                    // walk through the entry

+                    foreach (AtomElement element in entry.GetElements())

+                    {

+                        if (element.Object is AtomLink)

+                        {

+                            AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                        }

+                        else if (element.Object is cmisObjectType)

+                        {

+                            objectInFolder = new ObjectInFolderData();

+                            objectInFolder.Object = Converter.Convert((cmisObjectType)element.Object);

+                        }

+                        else if (IsStr(NamePathSegment, element))

+                        {

+                            pathSegment = (string)element.Object;

+                        }

+                        else if (element.Object is AtomFeed)

+                        {

+                            AddDescendantsLevel(repositoryId, (AtomFeed)element.Object, childContainerList);

+                        }

+                    }

+                }

+                finally

+                {

+                    UnlockLinks();

+                }

+

+                if (objectInFolder != null)

+                {

+                    objectInFolder.PathSegment = pathSegment;

+                    ObjectInFolderContainer childContainer = new ObjectInFolderContainer();

+                    childContainer.Object = objectInFolder;

+                    childContainer.Children = childContainerList;

+                    containerList.Add(childContainer);

+                }

+            }

+        }

+    }

+

+    internal class ObjectService : AbstractAtomPubService, IObjectService

+    {

+        public ObjectService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public string CreateDocument(string repositoryId, IProperties properties, string folderId, IContentStream contentStream,

+            VersioningState? versioningState, IList<string> policies, IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            CheckCreateProperties(properties);

+

+            // find the link

+            string link = LoadLink(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamVersioningState, versioningState);

+

+            // set up object and writer

+            cmisObjectType cmisObject = new cmisObjectType();

+            cmisObject.properties = Converter.Convert(properties);

+            cmisObject.policyIds = Converter.ConvertPolicies(policies);

+

+            String mediaType = null;

+            Stream stream = null;

+

+            if (contentStream != null)

+            {

+                mediaType = contentStream.MimeType;

+                stream = contentStream.Stream;

+            }

+

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject, mediaType, stream);

+

+            // post the new folder object

+            HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse the response

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            // handle ACL modifications

+            HandleAclModifications(repositoryId, entry, addAces, removeAces);

+

+            return entry.Id;

+        }

+

+        public string CreateDocumentFromSource(string repositoryId, string sourceId, IProperties properties, string folderId,

+            VersioningState? versioningState, IList<string> policies, IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            throw new CmisNotSupportedException("createDocumentFromSource is not supported by the AtomPub binding!");

+        }

+

+        public string CreateFolder(string repositoryId, IProperties properties, string folderId, IList<string> policies,

+            IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            CheckCreateProperties(properties);

+

+            // find the link

+            string link = LoadLink(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+

+

+            // set up object and writer

+            cmisObjectType cmisObject = new cmisObjectType();

+            cmisObject.properties = Converter.Convert(properties);

+            cmisObject.policyIds = Converter.ConvertPolicies(policies);

+

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject);

+

+            // post the new folder object

+            HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse the response

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            // handle ACL modifications

+            HandleAclModifications(repositoryId, entry, addAces, removeAces);

+

+            return entry.Id;

+        }

+

+        public string CreateRelationship(string repositoryId, IProperties properties, IList<string> policies, IAcl addAces,

+            IAcl removeAces, IExtensionsData extension)

+        {

+            CheckCreateProperties(properties);

+

+            // find source id

+            IPropertyData sourceIdProperty = properties[PropertyIds.SourceId];

+            if (!(sourceIdProperty is IPropertyId))

+            {

+                throw new CmisInvalidArgumentException("Source Id is not set!");

+            }

+

+            string sourceId = ((IPropertyId)sourceIdProperty).FirstValue;

+            if (sourceId == null)

+            {

+                throw new CmisInvalidArgumentException("Source Id is not set!");

+            }

+

+            // find the link

+            string link = LoadLink(repositoryId, sourceId, AtomPubConstants.RelRelationships, AtomPubConstants.MediatypeFeed);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, sourceId, AtomPubConstants.RelRelationships, AtomPubConstants.MediatypeFeed);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+

+            // set up object and writer

+            cmisObjectType cmisObject = new cmisObjectType();

+            cmisObject.properties = Converter.Convert(properties);

+            cmisObject.policyIds = Converter.ConvertPolicies(policies);

+

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject);

+

+            // post the new folder object

+            HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse the response

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            // handle ACL modifications

+            HandleAclModifications(repositoryId, entry, addAces, removeAces);

+

+            return entry.Id;

+        }

+

+        public string CreatePolicy(string repositoryId, IProperties properties, string folderId, IList<string> policies,

+            IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            CheckCreateProperties(properties);

+

+            // find the link

+            string link = LoadLink(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+

+

+            // set up object and writer

+            cmisObjectType cmisObject = new cmisObjectType();

+            cmisObject.properties = Converter.Convert(properties);

+            cmisObject.policyIds = Converter.ConvertPolicies(policies);

+

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject);

+

+            // post the new folder object

+            HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse the response

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            // handle ACL modifications

+            HandleAclModifications(repositoryId, entry, addAces, removeAces);

+

+            return entry.Id;

+        }

+

+        public IAllowableActions GetAllowableActions(string repositoryId, string objectId, IExtensionsData extension)

+        {

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelAllowableActions, AtomPubConstants.MediatypeAllowableAction);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelAllowableActions, AtomPubConstants.MediatypeAllowableAction);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomAllowableActions allowableActions = Parse<AtomAllowableActions>(resp.Stream);

+

+            return Converter.Convert(allowableActions.AllowableActions);

+        }

+

+        public IProperties GetProperties(string repositoryId, string objectId, string filter, IExtensionsData extension)

+        {

+            IObjectData obj = GetObjectInternal(repositoryId, IdentifierType.Id, objectId, ReturnVersion.This, filter,

+                    false, IncludeRelationships.None, "cmis:none", false, false, extension);

+

+            return obj.Properties;

+        }

+

+        public IList<IRenditionData> GetRenditions(string repositoryId, string objectId, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            IObjectData obj = GetObjectInternal(repositoryId, IdentifierType.Id, objectId, ReturnVersion.This,

+                PropertyIds.ObjectId, false, IncludeRelationships.None, renditionFilter, false, false, extension);

+

+            IList<IRenditionData> result = obj.Renditions;

+            if (result == null)

+            {

+                result = new List<IRenditionData>();

+            }

+

+            return result;

+        }

+

+        public IObjectData GetObject(string repositoryId, string objectId, string filter, bool? includeAllowableActions,

+            IncludeRelationships? includeRelationships, string renditionFilter, bool? includePolicyIds,

+            bool? includeAcl, IExtensionsData extension)

+        {

+            return GetObjectInternal(repositoryId, IdentifierType.Id, objectId, ReturnVersion.This, filter, includeAllowableActions,

+                includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension);

+        }

+

+        public IObjectData GetObjectByPath(string repositoryId, string path, string filter, bool? includeAllowableActions,

+            IncludeRelationships? includeRelationships, string renditionFilter, bool? includePolicyIds, bool? includeAcl,

+            IExtensionsData extension)

+        {

+            return GetObjectInternal(repositoryId, IdentifierType.Path, path, ReturnVersion.This, filter, includeAllowableActions,

+                includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension);

+        }

+

+        public IContentStream GetContentStream(string repositoryId, string objectId, string streamId, long? offset, long? length,

+            IExtensionsData extension)

+        {

+            ContentStream result = new ContentStream();

+

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.LinkRelContent, null);

+

+            if (link == null)

+            {

+                throw new CmisConstraintException("No content stream");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamStreamId, streamId);

+

+            // get the content

+            if (offset != null && offset > Int32.MaxValue)

+            {

+                throw new CmisInvalidArgumentException("Offset >" + Int32.MaxValue);

+            }

+            if (length != null && length > Int32.MaxValue)

+            {

+                throw new CmisInvalidArgumentException("Length >" + Int32.MaxValue);

+            }

+            HttpUtils.Response resp = HttpUtils.InvokeGET(url, Session, (int?)offset, (int?)length);

+

+            // check response code

+            if (resp.StatusCode != HttpStatusCode.OK && resp.StatusCode != HttpStatusCode.PartialContent)

+            {

+                throw ConvertStatusCode(resp.StatusCode, resp.Message, resp.ErrorContent, null);

+            }

+

+            result.FileName = null;

+            result.Length = resp.ContentLength;

+            result.MimeType = resp.ContentType;

+            result.Stream = resp.Stream;

+

+            return result;

+        }

+

+        public void UpdateProperties(string repositoryId, ref string objectId, ref string changeToken, IProperties properties,

+            IExtensionsData extension)

+        {

+            // we need an object id

+            if (objectId == null || objectId.Length == 0)

+            {

+                throw new CmisInvalidArgumentException("Object id must be set!");

+            }

+

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamChangeToken, changeToken);

+

+            // set up object and writer

+            cmisObjectType cmisObject = new cmisObjectType();

+            cmisObject.properties = Converter.Convert(properties);

+

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject);

+

+            // update

+            HttpUtils.Response resp = Put(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse new entry

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            // we expect a CMIS entry

+            if (entry.Id == null)

+            {

+                throw new CmisConnectionException("Received Atom entry is not a CMIS entry!");

+            }

+

+            // set object id

+            objectId = entry.Id;

+            changeToken = null;

+

+            LockLinks();

+            try

+            {

+                // clean up cache

+                RemoveLinks(repositoryId, entry.Id);

+

+                // walk through the entry

+                foreach (AtomElement element in entry.GetElements())

+                {

+                    if (element.Object is AtomLink)

+                    {

+                        AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                    }

+                    else if (element.Object is cmisObjectType)

+                    {

+                        // extract new change token

+                        cmisObject = (cmisObjectType)element.Object;

+                        if (cmisObject.properties != null)

+                        {

+                            foreach (cmisProperty property in cmisObject.properties.Items)

+                            {

+                                if (PropertyIds.ChangeToken == property.propertyDefinitionId && property is cmisPropertyString)

+                                {

+                                    cmisPropertyString changeTokenProperty = (cmisPropertyString)property;

+                                    if (changeTokenProperty.value != null && changeTokenProperty.value.Length > 0)

+                                    {

+                                        changeToken = changeTokenProperty.value[0];

+                                    }

+                                    break;

+                                }

+                            }

+                        }

+                    }

+                }

+            }

+            finally

+            {

+                UnlockLinks();

+            }

+        }

+

+        public void MoveObject(string repositoryId, ref string objectId, string targetFolderId, string sourceFolderId,

+            IExtensionsData extension)

+        {

+            if (objectId == null || objectId.Length == 0)

+            {

+                throw new CmisInvalidArgumentException("Object id must be set!");

+            }

+

+            if (targetFolderId == null || targetFolderId.Length == 0 || sourceFolderId == null || sourceFolderId.Length == 0)

+            {

+                throw new CmisInvalidArgumentException("Source and target folder must be set!");

+            }

+

+            // find the link

+            String link = LoadLink(repositoryId, targetFolderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, targetFolderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamSourceFolderId, sourceFolderId);

+

+            // set up object and writer

+            AtomEntryWriter entryWriter = new AtomEntryWriter(CreateIdObject(objectId));

+

+            // post move request

+            HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse the response

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            objectId = entry.Id;

+        }

+

+        public void DeleteObject(string repositoryId, string objectId, bool? allVersions, IExtensionsData extension)

+        {

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamAllVersions, allVersions);

+

+            Delete(url);

+        }

+

+        public IFailedToDeleteData DeleteTree(string repositoryId, string folderId, bool? allVersions, UnfileObject? unfileObjects,

+            bool? continueOnFailure, ExtensionsData extension)

+        {

+            // find the link

+            String link = LoadLink(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeDescendants);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeDescendants);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamAllVersions, allVersions);

+            url.AddParameter(AtomPubConstants.ParamUnfildeObjects, unfileObjects);

+            url.AddParameter(AtomPubConstants.ParamContinueOnFailure, continueOnFailure);

+

+            // make the call

+            HttpUtils.Response resp = HttpUtils.InvokeDELETE(url, Session);

+

+            // check response code

+            if (resp.StatusCode == HttpStatusCode.OK || resp.StatusCode == HttpStatusCode.Accepted || resp.StatusCode == HttpStatusCode.NoContent)

+            {

+                return new FailedToDeleteData();

+            }

+

+            throw ConvertStatusCode(resp.StatusCode, resp.Message, resp.ErrorContent, null);

+        }

+

+        public void SetContentStream(string repositoryId, ref string objectId, bool? overwriteFlag, ref string changeToken,

+            IContentStream contentStream, IExtensionsData extension)

+        {

+            if (objectId == null)

+            {

+                throw new CmisInvalidArgumentException("Object ID must be set!");

+            }

+

+            // we need content

+            if (contentStream == null || contentStream.Stream == null || contentStream.MimeType == null)

+            {

+                throw new CmisInvalidArgumentException("Content must be set!");

+            }

+

+            // find the link

+            String link = LoadLink(repositoryId, objectId, AtomPubConstants.RelEditMedia, null);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelEditMedia, null);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamChangeToken, changeToken);

+            url.AddParameter(AtomPubConstants.ParamOverwriteFlag, overwriteFlag);

+

+            HttpUtils.Output output = delegate(Stream stream)

+            {

+                int b;

+                byte[] buffer = new byte[4096];

+                while ((b = contentStream.Stream.Read(buffer, 0, buffer.Length)) > -1)

+                {

+                    stream.Write(buffer, 0, b);

+                }

+

+                contentStream.Stream.Close();

+            };

+

+            // send content

+            HttpUtils.Response resp = HttpUtils.InvokePUT(url, contentStream.MimeType, output, Session);

+

+            // check response code

+            if (resp.StatusCode != HttpStatusCode.OK && resp.StatusCode != HttpStatusCode.Created && resp.StatusCode != HttpStatusCode.NoContent)

+            {

+                throw ConvertStatusCode(resp.StatusCode, resp.Message, resp.ErrorContent, null);

+            }

+

+            objectId = null;

+            changeToken = null;

+        }

+

+        public void DeleteContentStream(string repositoryId, ref string objectId, ref string changeToken, IExtensionsData extension)

+        {

+            if (objectId == null)

+            {

+                throw new CmisInvalidArgumentException("Object ID must be set!");

+            }

+

+            // find the link

+            String link = LoadLink(repositoryId, objectId, AtomPubConstants.RelEditMedia, null);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelEditMedia, null);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            if (changeToken != null)

+            {

+                url.AddParameter(AtomPubConstants.ParamChangeToken, changeToken);

+            }

+

+            Delete(url);

+

+            objectId = null;

+            changeToken = null;

+        }

+

+        // ---- internal ---

+

+        private void CheckCreateProperties(IProperties properties)

+        {

+            if (properties == null || properties.PropertyList == null)

+            {

+                throw new CmisInvalidArgumentException("Properties must be set!");

+            }

+

+            if (properties[PropertyIds.ObjectTypeId] == null)

+            {

+                throw new CmisInvalidArgumentException("Property " + PropertyIds.ObjectTypeId + " must be set!");

+            }

+

+            if (properties[PropertyIds.ObjectId] != null)

+            {

+                throw new CmisInvalidArgumentException("Property " + PropertyIds.ObjectId + " must not be set!");

+            }

+        }

+

+        private void HandleAclModifications(String repositoryId, AtomEntry entry, IAcl addAces, IAcl removeAces)

+        {

+            if (!IsAclMergeRequired(addAces, removeAces))

+            {

+                return;

+            }

+

+            IAcl originalAces = null;

+

+            // walk through the entry and find the current ACL

+            foreach (AtomElement element in entry.GetElements())

+            {

+                if (element.Object is cmisObjectType)

+                {

+                    // extract current ACL

+                    cmisObjectType cmisObject = (cmisObjectType)element.Object;

+                    originalAces = Converter.Convert(cmisObject.acl, cmisObject.exactACLSpecified ? (bool?)cmisObject.exactACL : null);

+

+                    break;

+                }

+            }

+

+            if (originalAces != null)

+            {

+                // merge and update ACL

+                IAcl newACL = MergeAcls(originalAces, addAces, removeAces);

+                if (newACL != null)

+                {

+                    UpdateAcl(repositoryId, entry.Id, newACL, null);

+                }

+            }

+        }

+    }

+

+    internal class VersioningService : AbstractAtomPubService, IVersioningService

+    {

+        public VersioningService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public void CheckOut(string repositoryId, ref string objectId, IExtensionsData extension, out bool? contentCopied)

+        {

+            if (objectId == null || objectId.Length == 0)

+            {

+                throw new CmisInvalidArgumentException("Object id must be set!");

+            }

+

+            // find the link

+            String link = LoadCollection(repositoryId, AtomPubConstants.CollectionCheckedout);

+

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository or checkedout collection not supported!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+

+            // set up object and writer

+            AtomEntryWriter entryWriter = new AtomEntryWriter(CreateIdObject(objectId));

+

+            // post move request

+            HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse the response

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            objectId = entry.Id;

+

+            LockLinks();

+            try

+            {

+                // clean up cache

+                RemoveLinks(repositoryId, entry.Id);

+

+                // walk through the entry

+                foreach (AtomElement element in entry.GetElements())

+                {

+                    if (element.Object is AtomLink)

+                    {

+                        AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                    }

+                }

+            }

+            finally

+            {

+                UnlockLinks();

+            }

+

+            contentCopied = null;

+        }

+

+        public void CancelCheckOut(string repositoryId, string objectId, IExtensionsData extension)

+        {

+            // find the link

+            String link = LoadLink(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+            }

+

+            Delete(new UrlBuilder(link));

+        }

+

+        public void CheckIn(string repositoryId, ref string objectId, bool? major, IProperties properties,

+            IContentStream contentStream, string checkinComment, List<string> policies, IAcl addAces, IAcl removeAces,

+            IExtensionsData extension)

+        {

+            // we need an object id

+            if (objectId == null || objectId.Length == 0)

+            {

+                throw new CmisInvalidArgumentException("Object id must be set!");

+            }

+

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelSelf, AtomPubConstants.MediatypeEntry);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamCheckinComment, checkinComment);

+            url.AddParameter(AtomPubConstants.ParamMajor, major);

+            url.AddParameter(AtomPubConstants.ParamCheckIn, "true");

+

+            // set up object and writer

+            cmisObjectType cmisObject = new cmisObjectType();

+            cmisObject.properties = Converter.Convert(properties);

+            cmisObject.policyIds = Converter.ConvertPolicies(policies);

+

+            if (cmisObject.properties == null)

+            {

+                cmisObject.properties = new cmisPropertiesType();

+            }

+

+            string mediaType = null;

+            Stream stream = null;

+

+            if (contentStream != null)

+            {

+                mediaType = contentStream.MimeType;

+                stream = contentStream.Stream;

+            }

+

+            AtomEntryWriter entryWriter = new AtomEntryWriter(cmisObject, mediaType, stream);

+

+            // update

+            HttpUtils.Response resp = Put(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+

+            // parse new entry

+            AtomEntry entry = Parse<AtomEntry>(resp.Stream);

+

+            // we expect a CMIS entry

+            if (entry.Id == null)

+            {

+                throw new CmisConnectionException("Received Atom entry is not a CMIS entry!");

+            }

+

+            // set object id

+            objectId = entry.Id;

+

+            IAcl originalAces = null;

+

+            LockLinks();

+            try

+            {

+                // clean up cache

+                RemoveLinks(repositoryId, entry.Id);

+

+                // walk through the entry

+                foreach (AtomElement element in entry.GetElements())

+                {

+                    if (element.Object is AtomLink)

+                    {

+                        AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                    }

+                    else if (element.Object is cmisObjectType)

+                    {

+                        // extract current ACL

+                        cmisObject = (cmisObjectType)element.Object;

+                        originalAces = Converter.Convert(cmisObject.acl, cmisObject.exactACLSpecified ? (bool?)cmisObject.exactACL : null);

+                    }

+                }

+            }

+            finally

+            {

+                UnlockLinks();

+            }

+

+            // handle ACL modifications

+            if ((originalAces != null) && (IsAclMergeRequired(addAces, removeAces)))

+            {

+                // merge and update ACL

+                IAcl newACL = MergeAcls(originalAces, addAces, removeAces);

+                if (newACL != null)

+                {

+                    UpdateAcl(repositoryId, entry.Id, newACL, null);

+                }

+            }

+        }

+

+        public IObjectData GetObjectOfLatestVersion(string repositoryId, string objectId, string versionSeriesId, bool major,

+            string filter, bool? includeAllowableActions, IncludeRelationships? includeRelationships,

+            string renditionFilter, bool? includePolicyIds, bool? includeAcl, IExtensionsData extension)

+        {

+            ReturnVersion returnVersion = ReturnVersion.Latest;

+            if (major)

+            {

+                returnVersion = ReturnVersion.LatestMajor;

+            }

+

+            return GetObjectInternal(repositoryId, IdentifierType.Id, objectId, returnVersion, filter,

+                    includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension);

+        }

+

+        public IProperties GetPropertiesOfLatestVersion(string repositoryId, string objectId, string versionSeriesId, bool major,

+            string filter, IExtensionsData extension)

+        {

+            ReturnVersion returnVersion = ReturnVersion.Latest;

+            if (major)

+            {

+                returnVersion = ReturnVersion.LatestMajor;

+            }

+

+            IObjectData objectData = GetObjectInternal(repositoryId, IdentifierType.Id, objectId, returnVersion, filter,

+                    false, IncludeRelationships.None, "cmis:none", false, false, extension);

+

+            return objectData.Properties;

+        }

+

+        public IList<IObjectData> GetAllVersions(string repositoryId, string objectId, string versionSeriesId, string filter,

+            bool? includeAllowableActions, IExtensionsData extension)

+        {

+            IList<IObjectData> result = new List<IObjectData>();

+

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelVersionHistory, AtomPubConstants.MediatypeFeed);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelVersionHistory, AtomPubConstants.MediatypeFeed);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamAllowableActions, includeAllowableActions);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // get the versions

+            if (feed.GetEntries().Count > 0)

+            {

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    IObjectData version = null;

+

+                    LockLinks();

+                    try

+                    {

+                        // clean up cache

+                        RemoveLinks(repositoryId, entry.Id);

+

+                        // walk through the entry

+                        foreach (AtomElement element in entry.GetElements())

+                        {

+                            if (element.Object is AtomLink)

+                            {

+                                AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                            }

+                            else if (element.Object is cmisObjectType)

+                            {

+                                version = Converter.Convert((cmisObjectType)element.Object);

+                            }

+                        }

+                    }

+                    finally

+                    {

+                        UnlockLinks();

+                    }

+

+                    if (version != null)

+                    {

+                        result.Add(version);

+                    }

+                }

+            }

+

+            return result;

+        }

+    }

+

+    internal class RelationshipService : AbstractAtomPubService, IRelationshipService

+    {

+        public RelationshipService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public IObjectList GetObjectRelationships(string repositoryId, string objectId, bool? includeSubRelationshipTypes,

+            RelationshipDirection? relationshipDirection, string typeId, string filter, bool? includeAllowableActions,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            ObjectList result = new ObjectList();

+

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelRelationships, AtomPubConstants.MediatypeFeed);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelRelationships, AtomPubConstants.MediatypeFeed);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamSubRelationshipTypes, includeSubRelationshipTypes);

+            url.AddParameter(AtomPubConstants.ParamRelationshipDirection, relationshipDirection);

+            url.AddParameter(AtomPubConstants.ParamTypeId, typeId);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamAllowableActions, includeAllowableActions);

+            url.AddParameter(AtomPubConstants.ParamMaxItems, maxItems);

+            url.AddParameter(AtomPubConstants.ParamSkipCount, skipCount);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // handle top level

+            foreach (AtomElement element in feed.GetElements())

+            {

+                if (element.Object is AtomLink)

+                {

+                    if (IsNextLink(element))

+                    {

+                        result.HasMoreItems = true;

+                    }

+                }

+                else if (IsInt(NameNumItems, element))

+                {

+                    result.NumItems = (long)element.Object;

+                }

+            }

+

+            // get the children

+            if (feed.GetEntries().Count > 0)

+            {

+                result.Objects = new List<IObjectData>(feed.GetEntries().Count);

+

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    IObjectData relationship = null;

+

+                    LockLinks();

+                    try

+                    {

+                        // clean up cache

+                        RemoveLinks(repositoryId, entry.Id);

+

+                        // walk through the entry

+                        foreach (AtomElement element in entry.GetElements())

+                        {

+                            if (element.Object is AtomLink)

+                            {

+                                AddLink(repositoryId, entry.Id, (AtomLink)element.Object);

+                            }

+                            else if (element.Object is cmisObjectType)

+                            {

+                                relationship = Converter.Convert((cmisObjectType)element.Object);

+                            }

+                        }

+                    }

+                    finally

+                    {

+                        UnlockLinks();

+                    }

+

+                    if (relationship != null)

+                    {

+                        result.Objects.Add(relationship);

+                    }

+                }

+            }

+

+            return result;

+        }

+    }

+

+    internal class DiscoveryService : AbstractAtomPubService, IDiscoveryService

+    {

+        public DiscoveryService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public IObjectList Query(string repositoryId, string statement, bool? searchAllVersions,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            ObjectList result = new ObjectList();

+

+            // find the link

+            String link = LoadCollection(repositoryId, AtomPubConstants.CollectionQuery);

+

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository or query not supported!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+

+            // compile query request

+            AtomQueryWriter queryWriter = new AtomQueryWriter(statement, searchAllVersions, includeAllowableActions,

+                includeRelationships, renditionFilter, maxItems, skipCount);

+

+            // post the query and parse results

+            HttpUtils.Response resp = Post(url, AtomPubConstants.MediatypeQuery, new HttpUtils.Output(queryWriter.Write));

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // handle top level

+            foreach (AtomElement element in feed.GetElements())

+            {

+                if (element.Object is AtomLink)

+                {

+                    if (IsNextLink(element))

+                    {

+                        result.HasMoreItems = true;

+                    }

+                }

+                else if (IsInt(NameNumItems, element))

+                {

+                    result.NumItems = (long)element.Object;

+                }

+            }

+

+            // get the result set

+            if (feed.GetEntries().Count > 0)

+            {

+                result.Objects = new List<IObjectData>(feed.GetEntries().Count);

+

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    IObjectData hit = null;

+

+                    // walk through the entry

+                    foreach (AtomElement element in entry.GetElements())

+                    {

+                        if (element.Object is cmisObjectType)

+                        {

+                            hit = Converter.Convert((cmisObjectType)element.Object);

+                        }

+                    }

+

+                    if (hit != null)

+                    {

+                        result.Objects.Add(hit);

+                    }

+                }

+            }

+

+            return result;

+        }

+

+        public IObjectList GetContentChanges(string repositoryId, ref string changeLogToken, bool? includeProperties,

+           string filter, bool? includePolicyIds, bool? includeAcl, long? maxItems, IExtensionsData extension)

+        {

+            ObjectList result = new ObjectList();

+

+            // find the link

+            String link = LoadRepositoryLink(repositoryId, AtomPubConstants.RepRelChanges);

+

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository or content changes not supported!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamChangeLogToken, changeLogToken);

+            url.AddParameter(AtomPubConstants.ParamProperties, includeProperties);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+            url.AddParameter(AtomPubConstants.ParamPolicyIds, includePolicyIds);

+            url.AddParameter(AtomPubConstants.ParamACL, includeAcl);

+            url.AddParameter(AtomPubConstants.ParamMaxItems, maxItems);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // handle top level

+            foreach (AtomElement element in feed.GetElements())

+            {

+                if (element.Object is AtomLink)

+                {

+                    if (IsNextLink(element))

+                    {

+                        result.HasMoreItems = true;

+                    }

+                }

+                else if (IsInt(NameNumItems, element))

+                {

+                    result.NumItems = (long)element.Object;

+                }

+            }

+

+            // get the changes

+            if (feed.GetEntries().Count > 0)

+            {

+                result.Objects = new List<IObjectData>(feed.GetEntries().Count);

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    IObjectData hit = null;

+

+                    // walk through the entry

+                    foreach (AtomElement element in entry.GetElements())

+                    {

+                        if (element.Object is cmisObjectType)

+                        {

+                            hit = Converter.Convert((cmisObjectType)element.Object);

+                        }

+                    }

+

+                    if (hit != null)

+                    {

+                        result.Objects.Add(hit);

+                    }

+                }

+            }

+

+            return result;

+        }

+    }

+

+    internal class MultiFilingService : AbstractAtomPubService, IMultiFilingService

+    {

+        public MultiFilingService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public void AddObjectToFolder(string repositoryId, string objectId, string folderId, bool? allVersions, IExtensionsData extension)

+        {

+            if (objectId == null)

+            {

+                throw new CmisInvalidArgumentException("Object id must be set!");

+            }

+

+            // find the link

+            string link = LoadLink(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, folderId, AtomPubConstants.RelDown, AtomPubConstants.MediatypeChildren);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamAllVersions, allVersions);

+

+            // set up object and writer

+            AtomEntryWriter entryWriter = new AtomEntryWriter(CreateIdObject(objectId));

+

+            // post addObjectToFolder request

+            Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+        }

+

+        public void RemoveObjectFromFolder(string repositoryId, string objectId, string folderId, IExtensionsData extension)

+        {

+            if (objectId == null)

+            {

+                throw new CmisInvalidArgumentException("Object id must be set!");

+            }

+

+            // find the link

+            string link = LoadCollection(repositoryId, AtomPubConstants.CollectionUnfiled);

+

+            if (link == null)

+            {

+                throw new CmisObjectNotFoundException("Unknown repository or unfiling not supported!");

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamRemoveFrom, folderId);

+

+            // set up object and writer

+            AtomEntryWriter entryWriter = new AtomEntryWriter(CreateIdObject(objectId));

+

+            // post removeObjectFromFolder request

+            Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+        }

+    }

+

+    internal class AclService : AbstractAtomPubService, IAclService

+    {

+        public AclService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public IAcl GetAcl(string repositoryId, string objectId, bool? onlyBasicPermissions, IExtensionsData extension)

+        {

+            // find the link

+            String link = LoadLink(repositoryId, objectId, AtomPubConstants.RelACL, AtomPubConstants.MediatypeACL);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelACL, AtomPubConstants.MediatypeACL);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamOnlyBasicPermissions, onlyBasicPermissions);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomAcl acl = Parse<AtomAcl>(resp.Stream);

+

+            return Converter.Convert(acl.ACL, null);

+        }

+

+        public IAcl ApplyAcl(string repositoryId, string objectId, IAcl addAces, IAcl removeAces, AclPropagation? aclPropagation,

+            IExtensionsData extension)

+        {

+            IAcl result = null;

+

+            // fetch the current ACL

+            IAcl originalAces = GetAcl(repositoryId, objectId, false, null);

+

+            // if no changes required, just return the ACL

+            if (!IsAclMergeRequired(addAces, removeAces))

+            {

+                return originalAces;

+            }

+

+            // merge ACLs

+            IAcl newACL = MergeAcls(originalAces, addAces, removeAces);

+

+            // update ACL

+            AtomAcl acl = UpdateAcl(repositoryId, objectId, newACL, aclPropagation);

+            result = Converter.Convert(acl.ACL, null);

+

+            return result;

+        }

+    }

+

+    internal class PolicyService : AbstractAtomPubService, IPolicyService

+    {

+        public PolicyService(BindingSession session)

+        {

+            Session = session;

+        }

+

+        public void ApplyPolicy(string repositoryId, string policyId, string objectId, IExtensionsData extension)

+        {

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelPolicies, AtomPubConstants.MediatypeFeed);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelPolicies, AtomPubConstants.MediatypeFeed);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+

+            // set up object and writer

+            AtomEntryWriter entryWriter = new AtomEntryWriter(CreateIdObject(objectId));

+

+            // post applyPolicy request

+            Post(url, AtomPubConstants.MediatypeEntry, new HttpUtils.Output(entryWriter.Write));

+        }

+

+        public void RemovePolicy(string repositoryId, string policyId, string objectId, IExtensionsData extension)

+        {

+            // we need a policy id

+            if (policyId == null || policyId.Length == 0)

+            {

+                throw new CmisInvalidArgumentException("Policy id must be set!");

+            }

+

+            // find the link

+            String link = LoadLink(repositoryId, objectId, AtomPubConstants.RelPolicies, AtomPubConstants.MediatypeFeed);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelPolicies, AtomPubConstants.MediatypeFeed);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamFilter, PropertyIds.ObjectId);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // find the policy

+            string policyLink = null;

+            bool found = false;

+

+            if (feed.GetEntries().Count > 0)

+            {

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    // walk through the entry

+                    foreach (AtomElement element in entry.GetElements())

+                    {

+                        if (element.Object is AtomLink)

+                        {

+                            AtomLink atomLink = (AtomLink)element.Object;

+                            if (AtomPubConstants.RelSelf == atomLink.Rel)

+                            {

+                                policyLink = atomLink.Href;

+                            }

+                        }

+                        else if (element.Object is cmisObjectType)

+                        {

+                            string id = FindIdProperty((cmisObjectType)element.Object);

+                            if (policyId == id)

+                            {

+                                found = true;

+                            }

+                        }

+                    }

+

+                    if (found)

+                    {

+                        break;

+                    }

+                }

+            }

+

+            // if found, delete it

+            if (found && policyLink != null)

+            {

+                Delete(new UrlBuilder(policyLink));

+            }

+        }

+

+        public IList<IObjectData> GetAppliedPolicies(string repositoryId, string objectId, string filter, IExtensionsData extension)

+        {

+            IList<IObjectData> result = new List<IObjectData>();

+

+            // find the link

+            string link = LoadLink(repositoryId, objectId, AtomPubConstants.RelPolicies, AtomPubConstants.MediatypeFeed);

+

+            if (link == null)

+            {

+                ThrowLinkException(repositoryId, objectId, AtomPubConstants.RelPolicies, AtomPubConstants.MediatypeFeed);

+            }

+

+            UrlBuilder url = new UrlBuilder(link);

+            url.AddParameter(AtomPubConstants.ParamFilter, filter);

+

+            // read and parse

+            HttpUtils.Response resp = Read(url);

+            AtomFeed feed = Parse<AtomFeed>(resp.Stream);

+

+            // get the policies

+            if (feed.GetEntries().Count > 0)

+            {

+                foreach (AtomEntry entry in feed.GetEntries())

+                {

+                    IObjectData policy = null;

+

+                    // walk through the entry

+                    foreach (AtomElement element in entry.GetElements())

+                    {

+                        if (element.Object is cmisObjectType)

+                        {

+                            policy = Converter.Convert((cmisObjectType)element.Object);

+                        }

+                    }

+

+                    if (policy != null)

+                    {

+                        result.Add(policy);

+                    }

+                }

+            }

+

+            return result;

+        }

+

+        private string FindIdProperty(cmisObjectType cmisObject)

+        {

+            if (cmisObject == null || cmisObject.properties == null)

+            {

+                return null;

+            }

+

+            foreach (cmisProperty property in cmisObject.properties.Items)

+            {

+                if (PropertyIds.ObjectId == property.propertyDefinitionId && property is cmisPropertyId)

+                {

+                    string[] values = ((cmisPropertyId)property).value;

+                    if (values.Length == 1)

+                    {

+                        return values[0];

+                    }

+                }

+            }

+

+            return null;

+        }

+    }

+}

diff --git a/DotCMIS/binding/binding-caches.cs b/DotCMIS/binding/binding-caches.cs
new file mode 100644
index 0000000..2ee5f23
--- /dev/null
+++ b/DotCMIS/binding/binding-caches.cs
@@ -0,0 +1,662 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Diagnostics;

+using System.Linq;

+using System.Text;

+using System.Threading;

+using DotCMIS.Binding.Impl;

+using DotCMIS.Data;

+

+namespace DotCMIS.Binding

+{

+    // --- base cache implementation ---

+

+    internal interface ICache

+    {

+        void Initialize(string[] cacheLevelConfig);

+

+        void Put(string[] keys, object value);

+

+        object Get(string[] keys);

+

+        void Remove(string[] keys);

+

+        int Check(string[] keys);

+

+        void Lock();

+

+        void Unlock();

+    }

+

+    internal interface ICacheLevel

+    {

+        void Initialize(IDictionary<string, string> cacheLevelConfig);

+

+        object this[string key] { get; set; }

+

+        void Remove(string key);

+    }

+

+    internal class Cache : ICache

+    {

+        private IList<Type> cacheLevels;

+        private IList<IDictionary<string, string>> cacheLevelParameters;

+        private ICacheLevel root;

+        private string name;

+        private object cacheLock = new object();

+ 

+        public Cache()

+            : this("Cache")

+        {

+        }

+

+        public Cache(string name)

+        {

+            this.name = name;

+        }

+

+        public void Initialize(string[] cacheLevelConfig)

+        {

+            if (cacheLevels != null)

+            {

+                throw new ApplicationException("Cache already initialize!");

+            }

+

+            if ((cacheLevelConfig == null) || (cacheLevelConfig.Length == 0))

+            {

+                throw new ArgumentException("Cache config must not be empty!");

+            }

+

+            Lock();

+            try

+            {

+                cacheLevels = new List<Type>();

+                cacheLevelParameters = new List<IDictionary<string, string>>();

+

+                // build level lists

+                foreach (string config in cacheLevelConfig)

+                {

+                    int x = config.IndexOf(' ');

+                    if (x == -1)

+                    {

+                        AddLevel(config, null);

+                    }

+                    else

+                    {

+                        AddLevel(config.Substring(0, x), config.Substring(x + 1));

+                    }

+                }

+

+                root = CreateCacheLevel(0);

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public void Put(string[] keys, object value)

+        {

+            if (keys == null) { return; }

+

+            if (keys.Length != cacheLevels.Count)

+            {

+                throw new ArgumentException("Wrong number of keys!");

+            }

+

+            Lock();

+            try

+            {

+                ICacheLevel cacheLevel = root;

+

+                // follow the branch

+                for (int i = 0; i < keys.Length - 1; i++)

+                {

+                    object level = cacheLevel[keys[i]];

+

+                    // does the branch exist?

+                    if (level == null)

+                    {

+                        level = CreateCacheLevel(i + 1);

+                        cacheLevel[keys[i]] = level;

+                    }

+

+                    // next level

+                    cacheLevel = (ICacheLevel)level;

+                }

+

+                cacheLevel[keys[keys.Length - 1]] = value;

+

+                Trace.WriteLine(name + ": put [" + GetFormattedKeys(keys) + "] = " + value);

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public object Get(string[] keys)

+        {

+            if (keys == null) { return null; }

+

+            if (keys.Length != cacheLevels.Count)

+            {

+                throw new ArgumentException("Wrong number of keys!");

+            }

+

+            object result = null;

+

+            Lock();

+            try

+            {

+                ICacheLevel cacheLevel = root;

+

+                // follow the branch

+                for (int i = 0; i < keys.Length - 1; i++)

+                {

+                    object level = cacheLevel[keys[i]];

+

+                    // does the branch exist?

+                    if (level == null) { return null; }

+

+                    // next level

+                    cacheLevel = (ICacheLevel)level;

+                }

+

+                // get the value

+                result = cacheLevel[keys[keys.Length - 1]];

+            }

+            finally

+            {

+                Unlock();

+            }

+

+            return result;

+        }

+

+        public void Remove(string[] keys)

+        {

+            if (keys == null) { return; }

+

+            Lock();

+            try

+            {

+                ICacheLevel cacheLevel = root;

+

+                // follow the branch

+                for (int i = 0; i < keys.Length - 1; i++)

+                {

+                    object level = cacheLevel[keys[i]];

+

+                    // does the branch exist?

+                    if (level == null) { return; }

+

+                    // next level

+                    cacheLevel = (ICacheLevel)level;

+                }

+

+                cacheLevel.Remove(keys[keys.Length - 1]);

+

+                Trace.WriteLine(name + ": removed [" + GetFormattedKeys(keys) + "]");

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public int Check(string[] keys)

+        {

+            if (keys == null) { return -1; }

+

+            Lock();

+            try

+            {

+                ICacheLevel cacheLevel = root;

+

+                // follow the branch

+                for (int i = 0; i < keys.Length - 1; i++)

+                {

+                    object level = cacheLevel[keys[i]];

+

+                    // does the branch exist?

+                    if (level == null) { return i; }

+

+                    // next level

+                    cacheLevel = (ICacheLevel)level;

+                }

+

+                return keys.Length;

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public void Lock()

+        {

+            Monitor.Enter(cacheLock);

+        }

+

+        public void Unlock()

+        {

+            Monitor.Exit(cacheLock);

+        }

+

+        // --- internal ---

+

+        private void AddLevel(string typeName, string parameters)

+        {

+            Type levelType;

+

+            try

+            {

+                levelType = Type.GetType(typeName);

+            }

+            catch (Exception e)

+            {

+                throw new ArgumentException("Class '" + typeName + "' not found!", e);

+            }

+

+            if (!typeof(ICacheLevel).IsAssignableFrom(levelType))

+            {

+                throw new ArgumentException("Class '" + typeName + "' does not implement the ICacheLevel interface!");

+            }

+

+            cacheLevels.Add(levelType);

+

+            // process parameters

+            if (parameters == null)

+            {

+                cacheLevelParameters.Add(null);

+            }

+            else

+            {

+                Dictionary<string, string> parameterDict = new Dictionary<string, string>();

+                cacheLevelParameters.Add(parameterDict);

+

+                foreach (string pair in parameters.Split(','))

+                {

+                    string[] keyValue = pair.Split('=');

+                    if (keyValue.Length == 1)

+                    {

+                        parameterDict[keyValue[0]] = "";

+                    }

+                    else

+                    {

+                        parameterDict[keyValue[0]] = keyValue[1];

+                    }

+                }

+            }

+        }

+

+        private ICacheLevel CreateCacheLevel(int level)

+        {

+            if ((level < 0) || (level >= cacheLevels.Count))

+            {

+                throw new ArgumentException("Cache level doesn't fit the configuration!");

+            }

+

+            // get the class and create an instance

+            Type levelType = cacheLevels[level];

+            ICacheLevel cacheLevel = null;

+            try

+            {

+                cacheLevel = (ICacheLevel)Activator.CreateInstance(levelType);

+            }

+            catch (Exception e)

+            {

+                throw new ArgumentException("Cache level problem?!", e);

+            }

+

+            // initialize it

+            cacheLevel.Initialize(cacheLevelParameters[level]);

+

+            return cacheLevel;

+        }

+

+        private string GetFormattedKeys(string[] keys)

+        {

+            StringBuilder sb = new StringBuilder();

+            foreach (string k in keys)

+            {

+                if (sb.Length > 0)

+                {

+                    sb.Append(", ");

+                }

+                sb.Append(k);

+            }

+

+            return sb.ToString();

+        }

+    }

+

+    internal abstract class AbstractDictionaryCacheLevel : ICacheLevel

+    {

+        private static string NullKey = "";

+

+        private IDictionary<string, object> dict;

+        private bool fallbackEnabled = false;

+        private string fallbackKey = null;

+        private bool singleValueEnabled = false;

+

+        public abstract void Initialize(IDictionary<string, string> cacheLevelConfig);

+

+        public virtual object this[string key]

+        {

+            get

+            {

+                object value = null;

+                if (dict.TryGetValue(key == null ? NullKey : key, out value))

+                {

+                    return value;

+                }

+

+                if (fallbackEnabled && dict.TryGetValue(fallbackKey, out value))

+                {

+                    return value;

+                }

+

+                if (singleValueEnabled && dict.Count == 1)

+                {

+                    value = dict.Values.First();

+                }

+

+                return value;

+            }

+            set

+            {

+                if (value != null)

+                {

+                    dict[key == null ? NullKey : key] = value;

+                }

+            }

+        }

+

+        public virtual void Remove(string key)

+        {

+            dict.Remove(key);

+        }

+

+        public void SetDictionary(IDictionary<string, object> dict)

+        {

+            this.dict = dict;

+        }

+

+        protected void EnableKeyFallback(string key)

+        {

+            fallbackKey = key;

+            fallbackEnabled = true;

+        }

+

+        protected void DisableKeyFallback()

+        {

+            fallbackEnabled = false;

+        }

+

+        protected void EnableSingeValueFallback()

+        {

+            singleValueEnabled = true;

+        }

+

+        protected void DisableSingeValueFallback()

+        {

+            singleValueEnabled = false;

+        }

+

+        protected int GetIntParameter(IDictionary<string, string> parameters, string name, int defValue)

+        {

+            if (parameters == null)

+            {

+                return defValue;

+            }

+

+            string value;

+            if (!parameters.TryGetValue(name, out value))

+            {

+                return defValue;

+            }

+

+            try

+            {

+                return Int32.Parse(value);

+            }

+            catch (Exception)

+            {

+                return defValue;

+            }

+        }

+

+        protected bool GetBooleanParameter(IDictionary<string, string> parameters, string name, bool defValue)

+        {

+            if (parameters == null)

+            {

+                return defValue;

+            }

+

+            string value;

+            if (!parameters.TryGetValue(name, out value))

+            {

+                return defValue;

+            }

+

+            try

+            {

+                return Boolean.Parse(value);

+            }

+            catch (Exception)

+            {

+                return defValue;

+            }

+        }

+    }

+

+    internal class DictionaryCacheLevel : AbstractDictionaryCacheLevel

+    {

+        public const string Capacity = "capacity";

+        public const string SingleValue = "singleValue";

+

+        public override void Initialize(IDictionary<string, string> parameters)

+        {

+            int initialCapacity = GetIntParameter(parameters, Capacity, 32);

+            bool singleValue = GetBooleanParameter(parameters, SingleValue, false);

+

+            SetDictionary(new Dictionary<string, object>(initialCapacity));

+            if (singleValue)

+            {

+                EnableSingeValueFallback();

+            }

+        }

+    }

+

+    internal class LruCacheLevel : AbstractDictionaryCacheLevel

+    {

+        public const string MaxEntries = "maxEntries";

+

+        private LinkedList<string> keyList;

+        private int maxEntries;

+

+        public override void Initialize(IDictionary<string, string> parameters)

+        {

+            maxEntries = GetIntParameter(parameters, MaxEntries, 100);

+            keyList = new LinkedList<string>();

+            SetDictionary(new Dictionary<string, object>(maxEntries + 1));

+        }

+

+        public override object this[string key]

+        {

+            get

+            {

+                object value = base[key];

+                if (value != null)

+                {

+                    LinkedListNode<string> node = keyList.Find(key);

+                    if (node == null)

+                    {

+                        throw new ApplicationException("Cache error!");

+                    }

+                    else

+                    {

+                        keyList.Remove(node);

+                        keyList.AddFirst(node);

+                    }

+                }

+

+                return value;

+            }

+            set

+            {

+                if (value == null)

+                {

+                    return;

+                }

+

+                LinkedListNode<string> node = keyList.Find(key);

+                if (node == null)

+                {

+                    keyList.AddFirst(key);

+                    while (keyList.Count > maxEntries)

+                    {

+                        LinkedListNode<string> lastNode = keyList.Last;

+                        base.Remove(lastNode.Value);

+                        keyList.RemoveLast();

+                    }

+                }

+                else

+                {

+                    keyList.Remove(node);

+                    keyList.AddFirst(node);

+                }

+

+                base[key] = value;

+            }

+        }

+

+        public override void Remove(string key)

+        {

+            keyList.Remove(key);

+            base.Remove(key);

+        }

+    }

+

+    // ---- Caches ----

+

+    /// <summary>

+    /// Repository Info cache.

+    /// </summary>

+    internal class RepositoryInfoCache

+    {

+        private const int CacheSizeRepositories = 10;

+

+        private ICache cache;

+

+        public RepositoryInfoCache(BindingSession session)

+        {

+            int repCount = session.GetValue(SessionParameter.CacheSizeRepositories, CacheSizeRepositories);

+            if (repCount < 1)

+            {

+                repCount = CacheSizeRepositories;

+            }

+

+            cache = new Cache("Repository Info Cache");

+            cache.Initialize(new string[] { 

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=" + repCount });

+        }

+

+        public void Put(IRepositoryInfo repositoryInfo)

+        {

+            if ((repositoryInfo == null) || (repositoryInfo.Id == null))

+            {

+                return;

+            }

+

+            cache.Put(new string[] { repositoryInfo.Id }, repositoryInfo);

+        }

+

+        public IRepositoryInfo Get(string repositoryId)

+        {

+            return (IRepositoryInfo)cache.Get(new string[] { repositoryId });

+        }

+

+        public void Remove(string repositoryId)

+        {

+            cache.Remove(new string[] { repositoryId });

+        }

+    }

+

+    /// <summary>

+    /// Type Definition cache.

+    /// </summary>

+    internal class TypeDefinitionCache

+    {

+        private const int CacheSizeRepositories = 10;

+        private const int CacheSizeTypes = 100;

+

+        private ICache cache;

+

+        public TypeDefinitionCache(BindingSession session)

+        {

+            int repCount = session.GetValue(SessionParameter.CacheSizeRepositories, CacheSizeRepositories);

+            if (repCount < 1)

+            {

+                repCount = CacheSizeRepositories;

+            }

+

+            int typeCount = session.GetValue(SessionParameter.CacheSizeTypes, CacheSizeTypes);

+            if (typeCount < 1)

+            {

+                typeCount = CacheSizeTypes;

+            }

+

+            cache = new Cache("Type Definition Cache");

+            cache.Initialize(new string[] {

+                typeof(DictionaryCacheLevel).FullName + " " + DictionaryCacheLevel.Capacity + "=" + repCount, // repository

+                typeof(LruCacheLevel).FullName + " " + LruCacheLevel.MaxEntries + "=" + typeCount // type

+        });

+        }

+

+        public void Put(string repositoryId, ITypeDefinition typeDefinition)

+        {

+            if ((typeDefinition == null) || (typeDefinition.Id == null))

+            {

+                return;

+            }

+

+            cache.Put(new string[] { repositoryId, typeDefinition.Id }, typeDefinition);

+        }

+

+        public ITypeDefinition Get(string repositoryId, string typeId)

+        {

+            return (ITypeDefinition)cache.Get(new string[] { repositoryId, typeId });

+        }

+

+        public void Remove(string repositoryId, string typeId)

+        {

+            cache.Remove(new string[] { repositoryId, typeId });

+        }

+

+        public void Remove(string repositoryId)

+        {

+            cache.Remove(new string[] { repositoryId });

+        }

+    }

+}

diff --git a/DotCMIS/binding/binding-impl.cs b/DotCMIS/binding/binding-impl.cs
new file mode 100644
index 0000000..450034a
--- /dev/null
+++ b/DotCMIS/binding/binding-impl.cs
@@ -0,0 +1,604 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+using DotCMIS.Binding;

+using DotCMIS.Binding.Services;

+using System.Threading;

+using DotCMIS.Exceptions;

+using DotCMIS.Data;

+using DotCMIS.Data.Extensions;

+

+namespace DotCMIS.Binding.Impl

+{

+    /// <summary>

+    /// Binding layer implementation.

+    /// </summary>

+    internal class CmisBinding : ICmisBinding

+    {

+        private BindingSession session;

+        private BindingsObjectFactory objectFactory;

+        private BindingRepositoryService repositoryServiceWrapper;

+

+        public CmisBinding(IDictionary<string, string> sessionParameters)

+        {

+            if (sessionParameters == null)

+            {

+                throw new ArgumentNullException("sessionParameters");

+            }

+

+            if (!sessionParameters.ContainsKey(SessionParameter.BindingSpiClass))

+            {

+                throw new ArgumentException("Session parameters do not contain a SPI class name!");

+            }

+

+            // initialize session

+            session = new BindingSession();

+            foreach (string key in sessionParameters.Keys)

+            {

+                session.PutValue(key, sessionParameters[key]);

+            }

+

+            // set up object factory

+            objectFactory = new BindingsObjectFactory();

+

+            // set up authentication provider

+            string authenticationProviderClass;

+            if (sessionParameters.TryGetValue(SessionParameter.AuthenticationProviderClass, out authenticationProviderClass))

+            {

+                try

+                {

+                    Type authProvType = Type.GetType(authenticationProviderClass);

+                    AbstractAuthenticationProvider authenticationProvider = (AbstractAuthenticationProvider)Activator.CreateInstance(authProvType);

+                    authenticationProvider.Session = session;

+                    session.PutValue(BindingSession.AuthenticationProvider, authenticationProvider);

+                }

+                catch (Exception e)

+                {

+                    throw new CmisRuntimeException("Could not load authentictaion provider: " + e.Message, e);

+                }

+            }

+

+            // initialize the SPI

+            GetSpi();

+

+            // set up caches

+            ClearAllCaches();

+

+            // set up repository service

+            repositoryServiceWrapper = new BindingRepositoryService(session);

+        }

+

+        public IRepositoryService GetRepositoryService()

+        {

+            CheckSession();

+            return repositoryServiceWrapper;

+        }

+

+        public INavigationService GetNavigationService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetNavigationService();

+        }

+

+        public IObjectService GetObjectService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetObjectService();

+        }

+

+        public IVersioningService GetVersioningService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetVersioningService();

+        }

+

+        public IRelationshipService GetRelationshipService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetRelationshipService();

+        }

+

+        public IDiscoveryService GetDiscoveryService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetDiscoveryService();

+        }

+

+        public IMultiFilingService GetMultiFilingService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetMultiFilingService();

+        }

+

+        public IAclService GetAclService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetAclService();

+        }

+

+        public IPolicyService GetPolicyService()

+        {

+            CheckSession();

+            ICmisSpi spi = GetSpi();

+            return spi.GetPolicyService();

+        }

+

+        public IBindingsObjectFactory GetObjectFactory()

+        {

+            return objectFactory;

+        }

+

+        public void ClearAllCaches()

+        {

+            CheckSession();

+

+            session.Lock();

+            try

+            {

+                session.PutValue(BindingSession.RepositoryInfoCache, new RepositoryInfoCache(session));

+                session.PutValue(BindingSession.TypeDefinitionCache, new TypeDefinitionCache(session));

+

+                ICmisSpi spi = GetSpi();

+                spi.ClearAllCaches();

+            }

+            finally

+            {

+                session.Unlock();

+            }

+        }

+

+        public void ClearRepositoryCache(string repositoryId)

+        {

+            CheckSession();

+

+            if (repositoryId == null)

+            {

+                return;

+            }

+

+            session.Lock();

+            try

+            {

+                RepositoryInfoCache repInfoCache = session.GetRepositoryInfoCache();

+                repInfoCache.Remove(repositoryId);

+

+                TypeDefinitionCache typeDefCache = session.GetTypeDefinitionCache();

+                typeDefCache.Remove(repositoryId);

+

+                ICmisSpi spi = GetSpi();

+                spi.ClearRepositoryCache(repositoryId);

+            }

+            finally

+            {

+                session.Unlock();

+            }

+        }

+

+        public void Close()

+        {

+            CheckSession();

+

+            session.Lock();

+            try

+            {

+                GetSpi().Close();

+            }

+            finally

+            {

+                session.Unlock();

+                session = null;

+            }

+        }

+

+        private void CheckSession()

+        {

+            if (session == null)

+            {

+                throw new ApplicationException("Already closed.");

+            }

+        }

+

+        private ICmisSpi GetSpi()

+        {

+            return session.GetSpi();

+        }

+    }

+

+    /// <summary>

+    /// Session object implementation of the binding layer.

+    /// </summary>

+    internal class BindingSession : IBindingSession

+    {

+        public const string RepositoryInfoCache = "org.apache.chemistry.dotcmis.bindings.repositoryInfoCache";

+        public const string TypeDefinitionCache = "org.apache.chemistry.dotcmis.bindings.typeDefintionCache";

+        public const string AuthenticationProvider = "org.apache.chemistry.dotcmis.bindings.authenticationProvider";

+        public const string SpiObject = "org.apache.chemistry.dotcmis.bindings.spi.object";

+

+        private Dictionary<string, object> data;

+        private object sessionLock = new object();

+

+        public BindingSession()

+        {

+            data = new Dictionary<string, object>();

+        }

+

+        public object GetValue(string key)

+        {

+            return GetValue(key, null);

+        }

+

+        public object GetValue(string key, object defValue)

+        {

+            object result = null;

+

+            Lock();

+            try

+            {

+                if (data.TryGetValue(key, out result))

+                {

+                    return result;

+                }

+                else

+                {

+                    return defValue;

+                }

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public int GetValue(string key, int defValue)

+        {

+            object value = GetValue(key);

+

+            try

+            {

+                if (value is string)

+                {

+                    return Int32.Parse((string)value);

+                }

+                else if (value is int)

+                {

+                    return (int)value;

+                }

+            }

+            catch (Exception)

+            {

+            }

+

+            return defValue;

+        }

+

+        public void PutValue(string key, object value)

+        {

+            Lock();

+            try

+            {

+                data[key] = value;

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public void RemoveValue(string key)

+        {

+            Lock();

+            try

+            {

+                data.Remove(key);

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public ICmisSpi GetSpi()

+        {

+            Lock();

+            try

+            {

+                ICmisSpi spi = GetValue(SpiObject) as ICmisSpi;

+                if (spi != null)

+                {

+                    return spi;

+                }

+

+

+                // ok, we have to create it...

+                try

+                {

+                    object spiObject;

+                    if (data.TryGetValue(SessionParameter.BindingSpiClass, out spiObject))

+                    {

+                        string spiClassName = spiObject as string;

+                        if (spiClassName != null)

+                        {

+                            Type spiClass = Type.GetType(spiClassName);

+                            spi = (ICmisSpi)Activator.CreateInstance(spiClass);

+                            spi.initialize(this);

+                        }

+                        else

+                        {

+                            throw new CmisRuntimeException("SPI class is not set!");

+                        }

+                    }

+                    else

+                    {

+                        throw new CmisRuntimeException("SPI class is not set!");

+                    }

+                }

+                catch (CmisBaseException ce)

+                {

+                    throw ce;

+                }

+                catch (Exception e)

+                {

+                    throw new CmisRuntimeException("SPI cannot be initialized: " + e.Message, e);

+                }

+

+                // we have a SPI object -> put it into the session

+                data[SpiObject] = spi;

+

+                return spi;

+            }

+            finally

+            {

+                Unlock();

+            }

+        }

+

+        public RepositoryInfoCache GetRepositoryInfoCache()

+        {

+            return GetValue(RepositoryInfoCache) as RepositoryInfoCache;

+        }

+

+        public TypeDefinitionCache GetTypeDefinitionCache()

+        {

+            return GetValue(TypeDefinitionCache) as TypeDefinitionCache;

+        }

+

+        public AbstractAuthenticationProvider GetAuthenticationProvider()

+        {

+            return GetValue(AuthenticationProvider) as AbstractAuthenticationProvider;

+        }

+

+        public void Lock()

+        {

+            Monitor.Enter(sessionLock);

+        }

+

+        public void Unlock()

+        {

+            Monitor.Exit(sessionLock);

+        }

+

+        public override string ToString()

+        {

+            return data.ToString();

+        }

+    }

+

+    /// <summary>

+    /// Repository service proxy that caches repository infos and type defintions.

+    /// </summary>

+    internal class BindingRepositoryService : IRepositoryService

+    {

+        private BindingSession session;

+

+        public BindingRepositoryService(BindingSession session)

+        {

+            this.session = session;

+        }

+

+        public IList<IRepositoryInfo> GetRepositoryInfos(IExtensionsData extension)

+        {

+            IList<IRepositoryInfo> result = null;

+            bool hasExtension = (extension != null) && (extension.Extensions != null) && (extension.Extensions.Count > 0);

+

+            // get the SPI and fetch the repository infos

+            ICmisSpi spi = session.GetSpi();

+            result = spi.GetRepositoryService().GetRepositoryInfos(extension);

+

+            // put it into the cache

+            if (!hasExtension && (result != null))

+            {

+                RepositoryInfoCache cache = session.GetRepositoryInfoCache();

+                foreach (RepositoryInfo rid in result)

+                {

+                    cache.Put(rid);

+                }

+            }

+

+            return result;

+        }

+

+        public IRepositoryInfo GetRepositoryInfo(string repositoryId, IExtensionsData extension)

+        {

+            IRepositoryInfo result = null;

+            bool hasExtension = (extension != null) && (extension.Extensions != null) && (extension.Extensions.Count > 0);

+

+            RepositoryInfoCache cache = session.GetRepositoryInfoCache();

+

+            // if extension is not set, check the cache first

+            if (!hasExtension)

+            {

+                result = cache.Get(repositoryId);

+                if (result != null)

+                {

+                    return result;

+                }

+            }

+

+            // it was not in the cache -> get the SPI and fetch the repository info

+            ICmisSpi spi = session.GetSpi();

+            result = spi.GetRepositoryService().GetRepositoryInfo(repositoryId, extension);

+

+            // put it into the cache

+            if (!hasExtension)

+            {

+                cache.Put(result);

+            }

+

+            return result;

+        }

+

+        public ITypeDefinitionList GetTypeChildren(string repositoryId, string typeId, bool? includePropertyDefinitions,

+                long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            ITypeDefinitionList result = null;

+            bool hasExtension = (extension != null) && (extension.Extensions != null) && (extension.Extensions.Count > 0);

+

+            // get the SPI and fetch the type definitions

+            ICmisSpi spi = session.GetSpi();

+            result = spi.GetRepositoryService().GetTypeChildren(repositoryId, typeId, includePropertyDefinitions, maxItems,

+                    skipCount, extension);

+

+            // put it into the cache

+            if (!hasExtension && (includePropertyDefinitions ?? false) && (result != null))

+            {

+                TypeDefinitionCache cache = session.GetTypeDefinitionCache();

+                foreach (ITypeDefinition tdd in result.List)

+                {

+                    cache.Put(repositoryId, tdd);

+                }

+            }

+

+            return result;

+        }

+

+        public IList<ITypeDefinitionContainer> GetTypeDescendants(string repositoryId, string typeId, long? depth,

+                bool? includePropertyDefinitions, IExtensionsData extension)

+        {

+            IList<ITypeDefinitionContainer> result = null;

+            bool hasExtension = (extension != null) && (extension.Extensions != null) && (extension.Extensions.Count > 0);

+

+            // get the SPI and fetch the type definitions

+            ICmisSpi spi = session.GetSpi();

+            result = spi.GetRepositoryService().GetTypeDescendants(repositoryId, typeId, depth, includePropertyDefinitions,

+                    extension);

+

+            // put it into the cache

+            if (!hasExtension && (includePropertyDefinitions ?? false) && (result != null))

+            {

+                TypeDefinitionCache cache = session.GetTypeDefinitionCache();

+                AddToTypeCache(cache, repositoryId, result);

+            }

+

+            return result;

+        }

+

+        private void AddToTypeCache(TypeDefinitionCache cache, string repositoryId, IList<ITypeDefinitionContainer> containers)

+        {

+            if (containers == null)

+            {

+                return;

+            }

+

+            foreach (ITypeDefinitionContainer container in containers)

+            {

+                cache.Put(repositoryId, container.TypeDefinition);

+                AddToTypeCache(cache, repositoryId, container.Children);

+            }

+        }

+

+        public ITypeDefinition GetTypeDefinition(string repositoryId, string typeId, IExtensionsData extension)

+        {

+            ITypeDefinition result = null;

+            bool hasExtension = (extension != null) && (extension.Extensions != null) && (extension.Extensions.Count > 0);

+

+            TypeDefinitionCache cache = session.GetTypeDefinitionCache();

+

+            // if extension is not set, check the cache first

+            if (!hasExtension)

+            {

+                result = cache.Get(repositoryId, typeId);

+                if (result != null)

+                {

+                    return result;

+                }

+            }

+

+            // it was not in the cache -> get the SPI and fetch the type definition

+            ICmisSpi spi = session.GetSpi();

+            result = spi.GetRepositoryService().GetTypeDefinition(repositoryId, typeId, extension);

+

+            // put it into the cache

+            if (!hasExtension && (result != null))

+            {

+                cache.Put(repositoryId, result);

+            }

+

+            return result;

+        }

+    }

+

+    /// <summary>

+    /// Object factory implementation.

+    /// </summary>

+    internal class BindingsObjectFactory : IBindingsObjectFactory

+    {

+    }

+

+    /// <summary>

+    /// SPI interface.

+    /// </summary>

+    internal interface ICmisSpi

+    {

+        void initialize(BindingSession session);

+

+        IRepositoryService GetRepositoryService();

+

+        INavigationService GetNavigationService();

+

+        IObjectService GetObjectService();

+

+        IVersioningService GetVersioningService();

+

+        IRelationshipService GetRelationshipService();

+

+        IDiscoveryService GetDiscoveryService();

+

+        IMultiFilingService GetMultiFilingService();

+

+        IAclService GetAclService();

+

+        IPolicyService GetPolicyService();

+

+        void ClearAllCaches();

+

+        void ClearRepositoryCache(string repositoryId);

+

+        void Close();

+    }

+}

diff --git a/DotCMIS/binding/binding-intf.cs b/DotCMIS/binding/binding-intf.cs
new file mode 100644
index 0000000..4efef7c
--- /dev/null
+++ b/DotCMIS/binding/binding-intf.cs
@@ -0,0 +1,296 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+using DotCMIS.Binding.Services;

+using DotCMIS.Binding.Impl;

+using DotCMIS.CMISWebServicesReference;

+using System.Net;

+

+namespace DotCMIS.Binding

+{

+    public interface ICmisBinding

+    {

+        IRepositoryService GetRepositoryService();

+

+        INavigationService GetNavigationService();

+

+        IObjectService GetObjectService();

+

+        IVersioningService GetVersioningService();

+

+        IRelationshipService GetRelationshipService();

+

+        IDiscoveryService GetDiscoveryService();

+

+        IMultiFilingService GetMultiFilingService();

+

+        IAclService GetAclService();

+

+        IPolicyService GetPolicyService();

+

+        IBindingsObjectFactory GetObjectFactory();

+

+        void ClearAllCaches();

+

+        void ClearRepositoryCache(string repositoryId);

+

+        void Close();

+    }

+

+    public interface IBindingSession

+    {

+        object GetValue(string key);

+

+        object GetValue(string key, object defValue);

+

+        int GetValue(string key, int defValue);

+    }

+

+    public abstract class AbstractAuthenticationProvider

+    {

+        public IBindingSession Session { get; set; }

+

+        public abstract void Authenticate(object connection);

+

+        public string GetUser()

+        {

+            return Session.GetValue(SessionParameter.User) as string;

+        }

+

+        public string GetPassword()

+        {

+            return Session.GetValue(SessionParameter.Password) as string;

+        }

+    }

+

+    public class StandardAuthenticationProvider : AbstractAuthenticationProvider

+    {

+        public override void Authenticate(object connection)

+        {

+            string user = GetUser();

+            string password = GetPassword();

+            if (user == null || password == null)

+            {

+                return;

+            }

+

+            if (connection is RepositoryServicePortClient)

+            {

+                ((RepositoryServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((RepositoryServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is NavigationServicePortClient)

+            {

+                ((NavigationServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((NavigationServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is ObjectServicePortClient)

+            {

+                ((ObjectServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((ObjectServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is VersioningServicePortClient)

+            {

+                ((VersioningServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((VersioningServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is DiscoveryServicePortClient)

+            {

+                ((DiscoveryServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((DiscoveryServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is RelationshipServicePortClient)

+            {

+                ((RelationshipServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((RelationshipServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is MultiFilingServicePortClient)

+            {

+                ((MultiFilingServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((MultiFilingServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is PolicyServicePortClient)

+            {

+                ((PolicyServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((PolicyServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is ACLServicePortClient)

+            {

+                ((ACLServicePortClient)connection).ClientCredentials.UserName.UserName = user;

+                ((ACLServicePortClient)connection).ClientCredentials.UserName.Password = password;

+            }

+            else if (connection is WebRequest)

+            {

+                ((WebRequest)connection).Credentials = new NetworkCredential(user, password);

+            }

+        }

+    }

+

+

+    public interface IBindingsObjectFactory

+    {

+    }

+

+    public class CmisBindingFactory

+    {

+        // Default CMIS AtomPub binding SPI implementation

+        public const string BindingSpiAtomPub = "DotCMIS.Binding.AtomPub.CmisAtomPubSpi";

+        // Default CMIS Web Services binding SPI implementation

+        public const string BindingSpiWebServices = "DotCMIS.Binding.WebServices.CmisWebServicesSpi";

+

+        public const string StandardAuthenticationProviderClass = "DotCMIS.Binding.StandardAuthenticationProvider";

+

+        private IDictionary<string, string> defaults;

+

+        private CmisBindingFactory()

+        {

+            defaults = CreateNewDefaultParameters();

+        }

+

+        public static CmisBindingFactory NewInstance()

+        {

+            return new CmisBindingFactory();

+        }

+

+        public IDictionary<string, string> GetDefaultSessionParameters()

+        {

+            return defaults;

+        }

+

+        public void SetDefaultSessionParameters(IDictionary<string, string> sessionParameters)

+        {

+            if (sessionParameters == null)

+            {

+                defaults = CreateNewDefaultParameters();

+            }

+            else

+            {

+                defaults = sessionParameters;

+            }

+        }

+

+        public ICmisBinding CreateCmisBinding(IDictionary<string, string> sessionParameters)

+        {

+            CheckSessionParameters(sessionParameters, true);

+            AddDefaultParameters(sessionParameters);

+

+            return new CmisBinding(sessionParameters);

+        }

+

+        public ICmisBinding CreateCmisAtomPubBinding(IDictionary<string, string> sessionParameters)

+        {

+            CheckSessionParameters(sessionParameters, false);

+            sessionParameters[SessionParameter.BindingSpiClass] = BindingSpiAtomPub;

+            if (!sessionParameters.ContainsKey(SessionParameter.AuthenticationProviderClass))

+            {

+                sessionParameters[SessionParameter.AuthenticationProviderClass] = StandardAuthenticationProviderClass;

+            }

+

+            AddDefaultParameters(sessionParameters);

+

+            Check(sessionParameters, SessionParameter.AtomPubUrl);

+

+            return new CmisBinding(sessionParameters);

+        }

+

+        public ICmisBinding CreateCmisWebServicesBinding(IDictionary<string, string> sessionParameters)

+        {

+            CheckSessionParameters(sessionParameters, false);

+            sessionParameters[SessionParameter.BindingSpiClass] = BindingSpiWebServices;

+            if (!sessionParameters.ContainsKey(SessionParameter.AuthenticationProviderClass))

+            {

+                sessionParameters[SessionParameter.AuthenticationProviderClass] = StandardAuthenticationProviderClass;

+            }

+

+            AddDefaultParameters(sessionParameters);

+

+            Check(sessionParameters, SessionParameter.WebServicesAclService);

+            Check(sessionParameters, SessionParameter.WebServicesDiscoveryService);

+            Check(sessionParameters, SessionParameter.WebServicesMultifilingService);

+            Check(sessionParameters, SessionParameter.WebServicesNavigationService);

+            Check(sessionParameters, SessionParameter.WebServicesObjectService);

+            Check(sessionParameters, SessionParameter.WebServicesPolicyService);

+            Check(sessionParameters, SessionParameter.WebServicesRelationshipService);

+            Check(sessionParameters, SessionParameter.WebServicesRepositoryService);

+            Check(sessionParameters, SessionParameter.WebServicesVersioningService);

+

+            return new CmisBinding(sessionParameters);

+        }

+

+        // ---- internals ----

+

+        private void CheckSessionParameters(IDictionary<string, string> sessionParameters, bool mustContainSpi)

+        {

+            // don't accept null

+            if (sessionParameters == null)

+            {

+                throw new ArgumentNullException("sessionParameters");

+            }

+

+            // check binding entry

+            if (mustContainSpi)

+            {

+                string spiClass;

+

+                if (sessionParameters.TryGetValue(SessionParameter.BindingSpiClass, out spiClass))

+                {

+                    throw new ArgumentException("SPI class entry (" + SessionParameter.BindingSpiClass + ") is missing!");

+                }

+

+                if ((spiClass == null) || (spiClass.Trim().Length == 0))

+                {

+                    throw new ArgumentException("SPI class entry (" + SessionParameter.BindingSpiClass + ") is invalid!");

+                }

+            }

+        }

+

+        private void Check(IDictionary<string, string> sessionParameters, String parameter)

+        {

+            if (!sessionParameters.ContainsKey(parameter))

+            {

+                throw new ArgumentException("Parameter '" + parameter + "' is missing!");

+            }

+        }

+

+        private void AddDefaultParameters(IDictionary<string, string> sessionParameters)

+        {

+            foreach (string key in defaults.Keys)

+            {

+                if (!sessionParameters.ContainsKey(key))

+                {

+                    sessionParameters[key] = defaults[key];

+                }

+            }

+        }

+

+        private IDictionary<string, string> CreateNewDefaultParameters()

+        {

+            IDictionary<string, string> result = new Dictionary<string, string>();

+

+            result[SessionParameter.CacheSizeRepositories] = "10";

+            result[SessionParameter.CacheSizeTypes] = "100";

+            result[SessionParameter.CacheSizeLinks] = "400";

+

+            return result;

+        }

+    }

+}

diff --git a/DotCMIS/binding/converter.cs b/DotCMIS/binding/converter.cs
new file mode 100644
index 0000000..9fd836a
--- /dev/null
+++ b/DotCMIS/binding/converter.cs
@@ -0,0 +1,1576 @@
+using DotCMIS.CMISWebServicesReference;

+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using DotCMIS.Data;

+using DotCMIS.Data.Extensions;

+using System.Collections.Generic;

+using System.Xml;

+using DotCMIS.Enums;

+using System;

+using System.Reflection;

+using System.Xml.Serialization;

+using System.IO;

+

+namespace DotCMIS.Binding

+{

+    internal class Converter

+    {

+        /// <summary>

+        /// Converts a repository info.

+        /// </summary>

+        public static IRepositoryInfo Convert(cmisRepositoryInfoType repositotyInfo)

+        {

+            if (repositotyInfo == null)

+            {

+                return null;

+            }

+

+            RepositoryInfo result = new RepositoryInfo();

+            result.Id = repositotyInfo.repositoryId;

+            result.Name = repositotyInfo.repositoryName;

+            result.Description = repositotyInfo.repositoryDescription;

+            result.VendorName = repositotyInfo.vendorName;

+            result.ProductName = repositotyInfo.productName;

+            result.ProductVersion = repositotyInfo.productVersion;

+            result.RootFolderId = repositotyInfo.rootFolderId;

+            result.Capabilities = Convert(repositotyInfo.capabilities);

+            result.AclCapabilities = Convert(repositotyInfo.aclCapability);

+            result.LatestChangeLogToken = repositotyInfo.latestChangeLogToken;

+            result.CmisVersionSupported = repositotyInfo.cmisVersionSupported;

+            result.ThinClientUri = repositotyInfo.thinClientURI;

+            result.ChangesIncomplete = (repositotyInfo.changesIncompleteSpecified ? (bool?)repositotyInfo.changesIncomplete : null);

+            result.ChangesOnType = new List<BaseTypeId?>();

+            if (repositotyInfo.changesOnType != null)

+            {

+                foreach (enumBaseObjectTypeIds baseType in repositotyInfo.changesOnType)

+                {

+                    result.ChangesOnType.Add((BaseTypeId?)CmisValue.SerializerToCmisEnum(baseType));

+                }

+            }

+            result.PrincipalIdAnonymous = repositotyInfo.principalAnonymous;

+            result.PrincipalIdAnyone = repositotyInfo.principalAnyone;

+

+            ConvertExtension(repositotyInfo, result);

+

+            return result;

+        }

+

+        /// <summary>

+        /// Converts repository capabilities.

+        /// </summary>

+        public static IRepositoryCapabilities Convert(cmisRepositoryCapabilitiesType capabilities)

+        {

+            if (capabilities == null)

+            {

+                return null;

+            }

+

+            RepositoryCapabilities result = new RepositoryCapabilities();

+            result.ContentStreamUpdatesCapability = (CapabilityContentStreamUpdates)CmisValue.SerializerToCmisEnum(capabilities.capabilityContentStreamUpdatability);

+            result.ChangesCapability = (CapabilityChanges)CmisValue.SerializerToCmisEnum(capabilities.capabilityChanges);

+            result.RenditionsCapability = (CapabilityRenditions)CmisValue.SerializerToCmisEnum(capabilities.capabilityRenditions);

+            result.IsGetDescendantsSupported = capabilities.capabilityGetDescendants;

+            result.IsGetFolderTreeSupported = capabilities.capabilityGetFolderTree;

+            result.IsMultifilingSupported = capabilities.capabilityMultifiling;

+            result.IsUnfilingSupported = capabilities.capabilityUnfiling;

+            result.IsVersionSpecificFilingSupported = capabilities.capabilityVersionSpecificFiling;

+            result.IsPwcSearchableSupported = capabilities.capabilityPWCSearchable;

+            result.IsPwcUpdatableSupported = capabilities.capabilityPWCUpdatable;

+            result.IsAllVersionsSearchableSupported = capabilities.capabilityAllVersionsSearchable;

+            result.QueryCapability = (CapabilityQuery)CmisValue.SerializerToCmisEnum(capabilities.capabilityQuery);

+            result.JoinCapability = (CapabilityJoin)CmisValue.SerializerToCmisEnum(capabilities.capabilityJoin);

+            result.AclCapability = (CapabilityAcl)CmisValue.SerializerToCmisEnum(capabilities.capabilityACL);

+

+            ConvertExtension(capabilities, result);

+

+            return result;

+        }

+

+        /// <summary>

+        /// Converts ACL capabilities.

+        /// </summary>

+        public static IAclCapabilities Convert(cmisACLCapabilityType capabilities)

+        {

+            if (capabilities == null)

+            {

+                return null;

+            }

+

+            AclCapabilities result = new AclCapabilities();

+            result.SupportedPermissions = (SupportedPermissions)CmisValue.SerializerToCmisEnum(capabilities.supportedPermissions);

+            result.AclPropagation = (AclPropagation)CmisValue.SerializerToCmisEnum(capabilities.propagation);

+            result.Permissions = new List<IPermissionDefinition>();

+            if (capabilities.permissions != null)

+            {

+                foreach (cmisPermissionDefinition permission in capabilities.permissions)

+                {

+                    PermissionDefinition permDef = new PermissionDefinition();

+                    permDef.Id = permission.permission;

+                    permDef.Description = permission.description;

+                    result.Permissions.Add(permDef);

+

+                    ConvertExtension(permission, permDef);

+                }

+            }

+            result.PermissionMapping = new Dictionary<string, IPermissionMapping>();

+            if (capabilities.mapping != null)

+            {

+                foreach (cmisPermissionMapping mapping in capabilities.mapping)

+                {

+                    PermissionMapping permMap = new PermissionMapping();

+                    permMap.Key = GetXmlEnumAttributeValue(mapping.key);

+                    permMap.Permissions = new List<string>();

+                    if (mapping.permission != null)

+                    {

+                        foreach (string s in mapping.permission)

+                        {

+                            permMap.Permissions.Add(s);

+                        }

+                    }

+

+                    result.PermissionMapping[permMap.Key] = permMap;

+

+                    ConvertExtension(mapping, permMap);

+                }

+            }

+

+            ConvertExtension(capabilities, result);

+

+            return result;

+        }

+

+        public static ITypeDefinition Convert(cmisTypeDefinitionType typeDef)

+        {

+            if (typeDef == null)

+            {

+                return null;

+            }

+

+            TypeDefinition result = null;

+            if (typeDef is cmisTypeDocumentDefinitionType)

+            {

+                DocumentTypeDefinition docType = new DocumentTypeDefinition();

+                cmisTypeDocumentDefinitionType docTypeDef = (cmisTypeDocumentDefinitionType)typeDef;

+

+                docType.IsVersionable = docTypeDef.versionable;

+                docType.ContentStreamAllowed = (ContentStreamAllowed)CmisValue.SerializerToCmisEnum(docTypeDef.contentStreamAllowed);

+

+                result = docType;

+            }

+            else if (typeDef is cmisTypeFolderDefinitionType)

+            {

+                result = new FolderTypeDefinition();

+            }

+            else if (typeDef is cmisTypePolicyDefinitionType)

+            {

+                result = new PolicyTypeDefinition();

+            }

+            else if (typeDef is cmisTypeRelationshipDefinitionType)

+            {

+                RelationshipTypeDefinition relType = new RelationshipTypeDefinition();

+                cmisTypeRelationshipDefinitionType relTypeDef = (cmisTypeRelationshipDefinitionType)typeDef;

+

+                if (relTypeDef.allowedSourceTypes != null)

+                {

+                    relType.AllowedSourceTypeIds = new List<string>();

+                    foreach (string id in relTypeDef.allowedSourceTypes)

+                    {

+                        relType.AllowedSourceTypeIds.Add(id);

+                    }

+                }

+

+                if (relTypeDef.allowedTargetTypes != null)

+                {

+                    relType.AllowedTargetTypeIds = new List<string>();

+                    foreach (string id in relTypeDef.allowedTargetTypes)

+                    {

+                        relType.AllowedTargetTypeIds.Add(id);

+                    }

+                }

+

+                result = relType;

+            }

+

+            result.Id = typeDef.id;

+            result.LocalName = typeDef.localName;

+            result.LocalNamespace = typeDef.localNamespace;

+            result.DisplayName = typeDef.displayName;

+            result.QueryName = typeDef.queryName;

+            result.Description = typeDef.description;

+            result.BaseTypeId = (BaseTypeId?)CmisValue.SerializerToCmisEnum(typeDef.baseId);

+            result.ParentTypeId = typeDef.parentId;

+            result.IsCreatable = typeDef.creatable;

+            result.IsFileable = typeDef.fileable;

+            result.IsQueryable = typeDef.queryable;

+            result.IsFulltextIndexed = typeDef.fulltextIndexed;

+            result.IsIncludedInSupertypeQuery = typeDef.includedInSupertypeQuery;

+            result.IsControllablePolicy = typeDef.controllablePolicy;

+            result.IsControllableAcl = typeDef.controllableACL;

+

+            if (typeDef.Items != null)

+            {

+                foreach (cmisPropertyDefinitionType propertyDefinition in typeDef.Items)

+                {

+                    result.AddPropertyDefinition(Convert(propertyDefinition));

+                }

+            }

+

+            ConvertExtension(typeDef, result);

+

+            return result;

+        }

+

+        public static IPropertyDefinition Convert(cmisPropertyDefinitionType propDef)

+        {

+            if (propDef == null) { return null; }

+

+            PropertyDefinition result = null;

+            if (propDef is cmisPropertyBooleanDefinitionType)

+            {

+                PropertyBooleanDefinition pd = new PropertyBooleanDefinition();

+                cmisPropertyBooleanDefinitionType cpd = (cmisPropertyBooleanDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<bool>();

+                    foreach (bool value in cpd.defaultValue.value) { pd.DefaultValue.Add(value); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<bool>>();

+                    foreach (cmisChoiceBoolean c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                result = pd;

+            }

+            else if (propDef is cmisPropertyDateTimeDefinitionType)

+            {

+                PropertyDateTimeDefinition pd = new PropertyDateTimeDefinition();

+                cmisPropertyDateTimeDefinitionType cpd = (cmisPropertyDateTimeDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<DateTime>();

+                    foreach (DateTime value in cpd.defaultValue.value) { pd.DefaultValue.Add(value); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<DateTime>>();

+                    foreach (cmisChoiceDateTime c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                if (cpd.resolutionSpecified)

+                {

+                    pd.DateTimeResolution = (DateTimeResolution)CmisValue.SerializerToCmisEnum(cpd.resolution);

+                }

+

+                result = pd;

+            }

+            else if (propDef is cmisPropertyDecimalDefinitionType)

+            {

+                PropertyDecimalDefinition pd = new PropertyDecimalDefinition();

+                cmisPropertyDecimalDefinitionType cpd = (cmisPropertyDecimalDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<decimal>();

+                    foreach (decimal value in cpd.defaultValue.value) { pd.DefaultValue.Add(value); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<decimal>>();

+                    foreach (cmisChoiceDecimal c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                if (cpd.maxValueSpecified)

+                {

+                    pd.MaxValue = cpd.maxValue;

+                }

+                if (cpd.minValueSpecified)

+                {

+                    pd.MinValue = cpd.minValue;

+                }

+                if (cpd.precisionSpecified)

+                {

+                    pd.Precision = (DecimalPrecision)CmisValue.SerializerToCmisEnum(cpd.precision);

+                }

+

+                result = pd;

+            }

+            else if (propDef is cmisPropertyHtmlDefinitionType)

+            {

+                PropertyHtmlDefinition pd = new PropertyHtmlDefinition();

+                cmisPropertyHtmlDefinitionType cpd = (cmisPropertyHtmlDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<string>();

+                    foreach (string value in cpd.defaultValue.value) { pd.DefaultValue.Add(value); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<string>>();

+                    foreach (cmisChoiceHtml c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                result = pd;

+            }

+            else if (propDef is cmisPropertyIdDefinitionType)

+            {

+                PropertyIdDefinition pd = new PropertyIdDefinition();

+                cmisPropertyIdDefinitionType cpd = (cmisPropertyIdDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<string>();

+                    foreach (string value in cpd.defaultValue.value) { pd.DefaultValue.Add(value); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<string>>();

+                    foreach (cmisChoiceId c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                result = pd;

+            }

+            else if (propDef is cmisPropertyIntegerDefinitionType)

+            {

+                PropertyIntegerDefinition pd = new PropertyIntegerDefinition();

+                cmisPropertyIntegerDefinitionType cpd = (cmisPropertyIntegerDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<long>();

+                    foreach (string value in cpd.defaultValue.value) { pd.DefaultValue.Add(Int64.Parse(value)); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<long>>();

+                    foreach (cmisChoiceInteger c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                if (cpd.maxValue != null)

+                {

+                    pd.MaxValue = Int64.Parse(cpd.maxValue);

+                }

+                if (cpd.minValue != null)

+                {

+                    pd.MinValue = Int64.Parse(cpd.minValue);

+                }

+

+                result = pd;

+            }

+            else if (propDef is cmisPropertyStringDefinitionType)

+            {

+                PropertyStringDefinition pd = new PropertyStringDefinition();

+                cmisPropertyStringDefinitionType cpd = (cmisPropertyStringDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<string>();

+                    foreach (string value in cpd.defaultValue.value) { pd.DefaultValue.Add(value); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<string>>();

+                    foreach (cmisChoiceString c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                if (cpd.maxLength != null)

+                {

+                    pd.MaxLength = Int64.Parse(cpd.maxLength);

+                }

+

+                result = pd;

+            }

+            else if (propDef is cmisPropertyUriDefinitionType)

+            {

+                PropertyUriDefinition pd = new PropertyUriDefinition();

+                cmisPropertyUriDefinitionType cpd = (cmisPropertyUriDefinitionType)propDef;

+

+                if (cpd.defaultValue != null && cpd.defaultValue.value != null)

+                {

+                    pd.DefaultValue = new List<string>();

+                    foreach (string value in cpd.defaultValue.value) { pd.DefaultValue.Add(value); }

+                }

+                if (cpd.choice != null)

+                {

+                    pd.Choices = new List<IChoice<string>>();

+                    foreach (cmisChoiceUri c in cpd.choice) { pd.Choices.Add(ConvertChoice(c)); }

+                }

+

+                result = pd;

+            }

+

+            result.Id = propDef.id;

+            result.LocalName = propDef.localName;

+            result.LocalNamespace = propDef.localNamespace;

+            result.DisplayName = propDef.displayName;

+            result.QueryName = propDef.queryName;

+            result.Description = propDef.description;

+            result.PropertyType = (PropertyType?)CmisValue.SerializerToCmisEnum(propDef.propertyType);

+            result.Cardinality = (Cardinality?)CmisValue.SerializerToCmisEnum(propDef.cardinality);

+            result.Updatability = (Updatability?)CmisValue.SerializerToCmisEnum(propDef.updatability);

+            result.IsInherited = (propDef.inheritedSpecified ? (bool?)propDef.inherited : null);

+            result.IsRequired = propDef.required;

+            result.IsQueryable = propDef.queryable;

+            result.IsOrderable = propDef.orderable;

+            result.IsOpenChoice = (propDef.openChoiceSpecified ? (bool?)propDef.openChoice : null);

+

+            ConvertExtension(propDef, result);

+

+            return result;

+        }

+

+        private static IChoice<bool> ConvertChoice(cmisChoiceBoolean choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<bool> result = new Choice<bool>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<bool>();

+                foreach (bool v in choice.value) { result.Value.Add(v); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<bool>>();

+                foreach (cmisChoiceBoolean sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+        private static IChoice<DateTime> ConvertChoice(cmisChoiceDateTime choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<DateTime> result = new Choice<DateTime>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<DateTime>();

+                foreach (DateTime v in choice.value) { result.Value.Add(v); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<DateTime>>();

+                foreach (cmisChoiceDateTime sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+        private static IChoice<decimal> ConvertChoice(cmisChoiceDecimal choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<decimal> result = new Choice<decimal>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<decimal>();

+                foreach (decimal v in choice.value) { result.Value.Add(v); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<decimal>>();

+                foreach (cmisChoiceDecimal sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+        private static IChoice<string> ConvertChoice(cmisChoiceHtml choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<string> result = new Choice<string>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<string>();

+                foreach (string v in choice.value) { result.Value.Add(v); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<string>>();

+                foreach (cmisChoiceHtml sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+        private static IChoice<string> ConvertChoice(cmisChoiceId choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<string> result = new Choice<string>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<string>();

+                foreach (string v in choice.value) { result.Value.Add(v); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<string>>();

+                foreach (cmisChoiceId sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+        private static IChoice<long> ConvertChoice(cmisChoiceInteger choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<long> result = new Choice<long>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<long>();

+                foreach (string v in choice.value) { result.Value.Add(Int64.Parse(v)); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<long>>();

+                foreach (cmisChoiceInteger sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+        private static IChoice<string> ConvertChoice(cmisChoiceString choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<string> result = new Choice<string>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<string>();

+                foreach (string v in choice.value) { result.Value.Add(v); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<string>>();

+                foreach (cmisChoiceString sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+        private static IChoice<string> ConvertChoice(cmisChoiceUri choice)

+        {

+            if (choice == null) { return null; }

+

+            Choice<string> result = new Choice<string>();

+            result.DisplayName = choice.displayName;

+            if (choice.value != null)

+            {

+                result.Value = new List<string>();

+                foreach (string v in choice.value) { result.Value.Add(v); }

+            }

+            if (choice.choice != null)

+            {

+                result.Choices = new List<IChoice<string>>();

+                foreach (cmisChoiceUri sc in choice.choice) { result.Choices.Add(ConvertChoice(sc)); }

+            }

+

+            return result;

+        }

+

+

+        /// <summary>

+        /// Converts a type defintion list.

+        /// </summary> 

+        public static ITypeDefinitionList Convert(cmisTypeDefinitionListType typeDefList)

+        {

+            if (typeDefList == null) { return null; }

+

+            TypeDefinitionList result = new TypeDefinitionList();

+

+            if (typeDefList.types != null)

+            {

+                result.List = new List<ITypeDefinition>();

+                foreach (cmisTypeDefinitionType type in typeDefList.types)

+                {

+                    result.List.Add(Convert(type));

+                }

+            }

+

+            result.HasMoreItems = typeDefList.hasMoreItems;

+            result.NumItems = Int64.Parse(typeDefList.numItems);

+

+            ConvertExtension(typeDefList, result);

+

+            return result;

+        }

+

+        /// <summary>

+        /// Converts a type defintion container.

+        /// </summary> 

+        public static ITypeDefinitionContainer Convert(cmisTypeContainer typeDefCont)

+        {

+            if (typeDefCont == null) { return null; }

+

+            TypeDefinitionContainer result = new TypeDefinitionContainer();

+            result.TypeDefinition = Convert(typeDefCont.type);

+            if (typeDefCont.children != null)

+            {

+                result.Children = new List<ITypeDefinitionContainer>();

+                foreach (cmisTypeContainer container in typeDefCont.children)

+                {

+                    result.Children.Add(Convert(container));

+                }

+            }

+

+            ConvertExtension(typeDefCont, result);

+

+            return result;

+        }

+

+        public static IObjectData Convert(cmisObjectType cmisObject)

+        {

+            if (cmisObject == null) { return null; }

+

+            ObjectData result = new ObjectData();

+            result.Properties = Convert(cmisObject.properties);

+            result.AllowableActions = Convert(cmisObject.allowableActions);

+            if (cmisObject.relationship != null)

+            {

+                result.Relationships = new List<IObjectData>();

+                foreach (cmisObjectType co in cmisObject.relationship)

+                {

+                    result.Relationships.Add(Convert(co));

+                }

+            }

+            result.ChangeEventInfo = Convert(cmisObject.changeEventInfo);

+            result.IsExactAcl = cmisObject.exactACLSpecified ? (bool?)cmisObject.exactACL : null;

+            result.Acl = Convert(cmisObject.acl, result.IsExactAcl);

+            result.PolicyIds = Convert(cmisObject.policyIds);

+            if (cmisObject.rendition != null)

+            {

+                result.Renditions = new List<IRenditionData>();

+                foreach (cmisRenditionType rendition in cmisObject.rendition)

+                {

+                    result.Renditions.Add(Convert(rendition));

+                }

+            }

+

+            ConvertExtension(cmisObject, result);

+

+            return result;

+        }

+

+        public static IProperties Convert(cmisPropertiesType properties)

+        {

+            if (properties == null) { return null; }

+

+            Properties result = new Properties();

+            if (properties.Items != null)

+            {

+                foreach (cmisProperty property in properties.Items)

+                {

+                    result.AddProperty(Convert(property));

+                }

+            }

+

+            ConvertExtension(properties, result);

+

+            return result;

+        }

+        public static IPropertyData Convert(cmisProperty property)

+        {

+            if (property == null) { return null; }

+

+            PropertyData result = null;

+            if (property is cmisPropertyString)

+            {

+                result = new PropertyString();

+                if (((cmisPropertyString)property).value != null)

+                {

+                    ((PropertyString)result).Values = new List<string>();

+                    foreach (string value in ((cmisPropertyString)property).value)

+                    {

+                        ((PropertyString)result).Values.Add(value);

+                    }

+                }

+            }

+            else if (property is cmisPropertyId)

+            {

+                result = new PropertyId();

+                if (((cmisPropertyId)property).value != null)

+                {

+                    ((PropertyId)result).Values = new List<string>();

+                    foreach (string value in ((cmisPropertyId)property).value)

+                    {

+                        ((PropertyId)result).Values.Add(value);

+                    }

+                }

+            }

+            else if (property is cmisPropertyInteger)

+            {

+                result = new PropertyInteger();

+                if (((cmisPropertyInteger)property).value != null)

+                {

+                    ((PropertyInteger)result).Values = new List<long>();

+                    foreach (string value in ((cmisPropertyInteger)property).value)

+                    {

+                        ((PropertyInteger)result).Values.Add(Int64.Parse(value));

+                    }

+                }

+            }

+            else if (property is cmisPropertyBoolean)

+            {

+                result = new PropertyBoolean();

+                if (((cmisPropertyBoolean)property).value != null)

+                {

+                    ((PropertyBoolean)result).Values = new List<bool>();

+                    foreach (bool value in ((cmisPropertyBoolean)property).value)

+                    {

+                        ((PropertyBoolean)result).Values.Add(value);

+                    }

+                }

+            }

+            else if (property is cmisPropertyDateTime)

+            {

+                result = new PropertyDateTime();

+                if (((cmisPropertyDateTime)property).value != null)

+                {

+                    ((PropertyDateTime)result).Values = new List<DateTime>();

+                    foreach (DateTime value in ((cmisPropertyDateTime)property).value)

+                    {

+                        ((PropertyDateTime)result).Values.Add(value);

+                    }

+                }

+            }

+            else if (property is cmisPropertyDecimal)

+            {

+                result = new PropertyDecimal();

+                if (((cmisPropertyDecimal)property).value != null)

+                {

+                    ((PropertyDecimal)result).Values = new List<decimal>();

+                    foreach (decimal value in ((cmisPropertyDecimal)property).value)

+                    {

+                        ((PropertyDecimal)result).Values.Add(value);

+                    }

+                }

+            }

+            else if (property is cmisPropertyHtml)

+            {

+                result = new PropertyHtml();

+                if (((cmisPropertyHtml)property).value != null)

+                {

+                    ((PropertyHtml)result).Values = new List<string>();

+                    foreach (string value in ((cmisPropertyHtml)property).value)

+                    {

+                        ((PropertyHtml)result).Values.Add(value);

+                    }

+                }

+            }

+            else if (property is cmisPropertyUri)

+            {

+                result = new PropertyUri();

+                if (((cmisPropertyUri)property).value != null)

+                {

+                    ((PropertyUri)result).Values = new List<string>();

+                    foreach (string value in ((cmisPropertyUri)property).value)

+                    {

+                        ((PropertyUri)result).Values.Add(value);

+                    }

+                }

+            }

+

+            result.Id = property.propertyDefinitionId;

+            result.LocalName = property.localName;

+            result.DisplayName = property.displayName;

+            result.QueryName = property.queryName;

+

+            ConvertExtension(property, result);

+

+            return result;

+        }

+

+

+        public static cmisPropertiesType Convert(IProperties properties)

+        {

+            if (properties == null) { return null; }

+

+            cmisPropertiesType result = new cmisPropertiesType();

+            if (properties.PropertyList != null)

+            {

+                result.Items = new cmisProperty[properties.PropertyList.Count];

+                for (int i = 0; i < properties.PropertyList.Count; i++)

+                {

+                    result.Items[i] = Convert(properties.PropertyList[i]);

+                }

+            }

+

+            ConvertExtension(properties, result);

+

+            return result;

+        }

+

+        public static cmisProperty Convert(IPropertyData property)

+        {

+            if (property == null) { return null; }

+

+            cmisProperty result = null;

+

+            if (property is IPropertyString)

+            {

+                result = new cmisPropertyString();

+                IList<string> propValues = ((IPropertyString)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyString)result).value = new string[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyString)result).value[i] = propValues[i];

+                    }

+                }

+            }

+            else if (property is IPropertyId)

+            {

+                result = new cmisPropertyId();

+                IList<string> propValues = ((IPropertyId)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyId)result).value = new string[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyId)result).value[i] = propValues[i];

+                    }

+                }

+            }

+            else if (property is IPropertyInteger)

+            {

+                result = new cmisPropertyInteger();

+                IList<long> propValues = ((IPropertyInteger)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyInteger)result).value = new string[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyInteger)result).value[i] = propValues[i].ToString();

+                    }

+                }

+            }

+            else if (property is IPropertyBoolean)

+            {

+                result = new cmisPropertyInteger();

+                IList<bool> propValues = ((IPropertyBoolean)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyBoolean)result).value = new bool[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyBoolean)result).value[i] = propValues[i];

+                    }

+                }

+            }

+            else if (property is IPropertyDateTime)

+            {

+                result = new cmisPropertyDateTime();

+                IList<DateTime> propValues = ((IPropertyDateTime)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyDateTime)result).value = new DateTime[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyDateTime)result).value[i] = propValues[i];

+                    }

+                }

+            }

+            else if (property is IPropertyDecimal)

+            {

+                result = new cmisPropertyDecimal();

+                IList<decimal> propValues = ((IPropertyDecimal)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyDecimal)result).value = new decimal[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyDecimal)result).value[i] = propValues[i];

+                    }

+                }

+            }

+            else if (property is IPropertyHtml)

+            {

+                result = new cmisPropertyHtml();

+                IList<string> propValues = ((IPropertyHtml)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyHtml)result).value = new string[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyHtml)result).value[i] = propValues[i];

+                    }

+                }

+            }

+            else if (property is IPropertyUri)

+            {

+                result = new cmisPropertyUri();

+                IList<string> propValues = ((IPropertyUri)property).Values;

+                if (propValues != null)

+                {

+                    ((cmisPropertyUri)result).value = new string[propValues.Count];

+                    for (int i = 0; i < propValues.Count; i++)

+                    {

+                        ((cmisPropertyUri)result).value[i] = propValues[i];

+                    }

+                }

+            }

+

+            result.propertyDefinitionId = property.Id;

+            result.localName = property.LocalName;

+            result.displayName = property.DisplayName;

+            result.queryName = property.QueryName;

+

+            ConvertExtension(property, result);

+

+            return result;

+        }

+

+        public static IAllowableActions Convert(cmisAllowableActionsType allowableActions)

+        {

+            if (allowableActions == null) { return null; }

+

+            AllowableActions result = new AllowableActions();

+            result.Actions = new HashSet<string>();

+

+            if (allowableActions.canDeleteObject && allowableActions.canDeleteObjectSpecified)

+            { result.Actions.Add(Actions.CanDeleteObject); }

+

+            if (allowableActions.canUpdateProperties && allowableActions.canUpdatePropertiesSpecified)

+            { result.Actions.Add(Actions.CanUpdateProperties); }

+

+            if (allowableActions.canGetFolderTree && allowableActions.canGetFolderTreeSpecified)

+            { result.Actions.Add(Actions.CanGetFolderTree); }

+

+            if (allowableActions.canGetProperties && allowableActions.canGetPropertiesSpecified)

+            { result.Actions.Add(Actions.CanGetProperties); }

+

+            if (allowableActions.canGetObjectRelationships && allowableActions.canGetObjectRelationshipsSpecified)

+            { result.Actions.Add(Actions.CanGetObjectRelationships); }

+

+            if (allowableActions.canGetObjectParents && allowableActions.canGetObjectParentsSpecified)

+            { result.Actions.Add(Actions.CanGetObjectParents); }

+

+            if (allowableActions.canGetFolderParent && allowableActions.canGetFolderParentSpecified)

+            { result.Actions.Add(Actions.CanGetFolderParent); }

+

+            if (allowableActions.canGetDescendants && allowableActions.canGetDescendantsSpecified)

+            { result.Actions.Add(Actions.CanGetDescendants); }

+

+            if (allowableActions.canMoveObject && allowableActions.canMoveObjectSpecified)

+            { result.Actions.Add(Actions.CanMoveObject); }

+

+            if (allowableActions.canDeleteContentStream && allowableActions.canDeleteContentStreamSpecified)

+            { result.Actions.Add(Actions.CanDeleteContentStream); }

+

+            if (allowableActions.canCheckOut && allowableActions.canCheckOutSpecified)

+            { result.Actions.Add(Actions.CanCheckOut); }

+

+            if (allowableActions.canCancelCheckOut && allowableActions.canCancelCheckOutSpecified)

+            { result.Actions.Add(Actions.CanCancelCheckOut); }

+

+            if (allowableActions.canCheckIn && allowableActions.canCheckInSpecified)

+            { result.Actions.Add(Actions.CanCheckIn); }

+

+            if (allowableActions.canSetContentStream && allowableActions.canSetContentStreamSpecified)

+            { result.Actions.Add(Actions.CanSetContentStream); }

+

+            if (allowableActions.canGetAllVersions && allowableActions.canGetAllVersionsSpecified)

+            { result.Actions.Add(Actions.CanGetAllVersions); }

+

+            if (allowableActions.canAddObjectToFolder && allowableActions.canAddObjectToFolderSpecified)

+            { result.Actions.Add(Actions.CanAddObjectToFolder); }

+

+            if (allowableActions.canRemoveObjectFromFolder && allowableActions.canRemoveObjectFromFolderSpecified)

+            { result.Actions.Add(Actions.CanRemoveObjectFromFolder); }

+

+            if (allowableActions.canGetContentStream && allowableActions.canGetContentStreamSpecified)

+            { result.Actions.Add(Actions.CanGetContentStream); }

+

+            if (allowableActions.canApplyPolicy && allowableActions.canApplyPolicySpecified)

+            { result.Actions.Add(Actions.CanApplyPolicy); }

+

+            if (allowableActions.canGetAppliedPolicies && allowableActions.canGetAppliedPoliciesSpecified)

+            { result.Actions.Add(Actions.CanGetAppliedPolicies); }

+

+            if (allowableActions.canRemovePolicy && allowableActions.canRemovePolicySpecified)

+            { result.Actions.Add(Actions.CanRemovePolicy); }

+

+            if (allowableActions.canGetChildren && allowableActions.canGetChildrenSpecified)

+            { result.Actions.Add(Actions.CanGetChildren); }

+

+            if (allowableActions.canCreateDocument && allowableActions.canCreateDocumentSpecified)

+            { result.Actions.Add(Actions.CanCreateDocument); }

+

+            if (allowableActions.canCreateFolder && allowableActions.canCreateFolderSpecified)

+            { result.Actions.Add(Actions.CanCreateFolder); }

+

+            if (allowableActions.canCreateRelationship && allowableActions.canCreateRelationshipSpecified)

+            { result.Actions.Add(Actions.CanCreateRelationship); }

+

+            if (allowableActions.canDeleteTree && allowableActions.canDeleteTreeSpecified)

+            { result.Actions.Add(Actions.CanDeleteTree); }

+

+            if (allowableActions.canGetRenditions && allowableActions.canGetRenditionsSpecified)

+            { result.Actions.Add(Actions.CanGetRenditions); }

+

+            if (allowableActions.canGetACL && allowableActions.canGetACLSpecified)

+            { result.Actions.Add(Actions.CanGetAcl); }

+

+            if (allowableActions.canApplyACL && allowableActions.canApplyACLSpecified)

+            { result.Actions.Add(Actions.CanApplyAcl); }

+

+            ConvertExtension(allowableActions, result);

+

+            return result;

+        }

+

+        public static IAcl Convert(cmisAccessControlListType acl, bool? isExact)

+        {

+            if (acl == null) { return null; }

+

+            Acl result = new Acl();

+            if (acl.permission != null)

+            {

+                result.Aces = new List<IAce>();

+                foreach (cmisAccessControlEntryType ace in acl.permission)

+                {

+                    result.Aces.Add(Convert(ace));

+                }

+            }

+            result.IsExact = isExact;

+

+            ConvertExtension(acl, result);

+

+            return result;

+        }

+

+

+        public static IAcl Convert(cmisACLType acl)

+        {

+            if (acl == null) { return null; }

+

+            Acl result = new Acl();

+            if (acl.ACL != null && acl.ACL.permission != null)

+            {

+                result.Aces = new List<IAce>();

+                foreach (cmisAccessControlEntryType ace in acl.ACL.permission)

+                {

+                    result.Aces.Add(Convert(ace));

+                }

+            }

+            result.IsExact = (acl.exactSpecified ? (bool?)acl.exactSpecified : null);

+

+            ConvertExtension(acl, result);

+

+            return result;

+        }

+

+

+        public static IAce Convert(cmisAccessControlEntryType ace)

+        {

+            if (ace == null) { return null; }

+

+            Ace result = new Ace();

+            if (ace.principal != null)

+            {

+                Principal principal = new Principal();

+                principal.Id = ace.principal.principalId;

+                result.Principal = principal;

+

+                ConvertExtension(ace.principal, principal);

+            }

+            if (ace.permission != null)

+            {

+                result.Permissions = new List<string>();

+                foreach (string permission in ace.permission)

+                {

+                    result.Permissions.Add(permission);

+                }

+            }

+            result.IsDirect = ace.direct;

+

+            ConvertExtension(ace, result);

+

+            return result;

+        }

+

+        public static cmisAccessControlListType Convert(IAcl acl)

+        {

+            if (acl == null) { return null; }

+

+            cmisAccessControlListType result = new cmisAccessControlListType();

+            if (acl.Aces != null)

+            {

+                result.permission = new cmisAccessControlEntryType[acl.Aces.Count];

+                for (int i = 0; i < acl.Aces.Count; i++)

+                {

+                    result.permission[i] = Convert(acl.Aces[i]);

+                }

+            }

+

+            ConvertExtension(acl, result);

+

+            return result;

+        }

+

+        public static cmisAccessControlEntryType Convert(IAce ace)

+        {

+            if (ace == null) { return null; }

+

+            cmisAccessControlEntryType result = new cmisAccessControlEntryType();

+            if (ace.Principal != null)

+            {

+                result.principal = new cmisAccessControlPrincipalType();

+                result.principal.principalId = ace.Principal.Id;

+

+                ConvertExtension(ace.Principal, result.principal);

+            }

+            if (ace.Permissions != null)

+            {

+                result.permission = new string[ace.Permissions.Count];

+                for (int i = 0; i < ace.Permissions.Count; i++)

+                {

+                    result.permission[i] = ace.Permissions[i];

+                }

+            }

+            result.direct = ace.IsDirect;

+

+            ConvertExtension(ace, result);

+

+            return result;

+        }

+

+

+        public static IPolicyIdList Convert(cmisListOfIdsType policyIdList)

+        {

+            if (policyIdList == null) { return null; }

+

+            PolicyIdList result = new PolicyIdList();

+            if (policyIdList.id != null)

+            {

+                result.PolicyIds = new List<string>();

+                foreach (string id in policyIdList.id)

+                {

+                    result.PolicyIds.Add(id);

+                }

+            }

+

+            ConvertExtension(policyIdList, result);

+

+            return result;

+        }

+

+        public static cmisListOfIdsType ConvertPolicies(IList<string> policyIds)

+        {

+            if (policyIds == null) { return null; }

+

+            cmisListOfIdsType result = new cmisListOfIdsType();

+            result.id = new string[policyIds.Count];

+            for (int i = 0; i < policyIds.Count; i++)

+            {

+                result.id[i] = policyIds[i];

+            }

+

+            return result;

+        }

+

+

+        public static IRenditionData Convert(cmisRenditionType rendition)

+        {

+            if (rendition == null) { return null; }

+

+            RenditionData result = new RenditionData();

+            result.StreamId = rendition.streamId;

+            result.MimeType = rendition.mimetype;

+            result.Length = Int64.Parse(rendition.length);

+            result.Kind = rendition.kind;

+            result.Title = rendition.title;

+            result.Height = Int64.Parse(rendition.height);

+            result.Width = Int64.Parse(rendition.width);

+            result.RenditionDocumentId = rendition.renditionDocumentId;

+

+            ConvertExtension(rendition, result);

+

+            return result;

+        }

+

+        public static IChangeEventInfo Convert(cmisChangeEventType changeEvent)

+        {

+            if (changeEvent == null) { return null; }

+

+            ChangeEventInfo result = new ChangeEventInfo();

+            result.ChangeType = (ChangeType)CmisValue.SerializerToCmisEnum(changeEvent.changeType);

+            result.ChangeTime = changeEvent.changeTime;

+

+            ConvertExtension(changeEvent, result);

+

+            return result;

+        }

+

+        public static IObjectInFolderList Convert(cmisObjectInFolderListType list)

+        {

+            if (list == null) { return null; }

+

+            ObjectInFolderList result = new ObjectInFolderList();

+            if (list.objects != null)

+            {

+                result.Objects = new List<IObjectInFolderData>();

+                foreach (cmisObjectInFolderType fo in list.objects)

+                {

+                    result.Objects.Add(Convert(fo));

+                }

+            }

+            result.HasMoreItems = list.hasMoreItems;

+            if (list.numItems != null)

+            {

+                result.NumItems = Int64.Parse(list.numItems);

+            }

+

+            ConvertExtension(list, result);

+

+            return result;

+        }

+

+

+        public static IObjectInFolderData Convert(cmisObjectInFolderType objectInFolder)

+        {

+            if (objectInFolder == null) { return null; }

+

+            ObjectInFolderData result = new ObjectInFolderData();

+            result.Object = Convert(objectInFolder.@object);

+            result.PathSegment = objectInFolder.pathSegment;

+

+            ConvertExtension(objectInFolder, result);

+

+            return result;

+        }

+

+        public static IObjectInFolderContainer Convert(cmisObjectInFolderContainerType container)

+        {

+            if (container == null) { return null; }

+

+            ObjectInFolderContainer result = new ObjectInFolderContainer();

+            result.Object = Convert(container.objectInFolder);

+            if (container.children != null)

+            {

+                result.Children = new List<IObjectInFolderContainer>();

+                foreach (cmisObjectInFolderContainerType child in container.children)

+                {

+                    result.Children.Add(Convert(child));

+                }

+            }

+

+            ConvertExtension(container, result);

+

+            return result;

+        }

+

+        public static IObjectParentData Convert(cmisObjectParentsType parent)

+        {

+            if (parent == null) { return null; }

+

+            ObjectParentData result = new ObjectParentData();

+            result.Object = Convert(parent.@object);

+            result.RelativePathSegment = parent.relativePathSegment;

+

+            ConvertExtension(parent, result);

+

+            return result;

+        }

+

+        public static IObjectList Convert(cmisObjectListType list)

+        {

+            if (list == null) { return null; }

+

+            ObjectList result = new ObjectList();

+            if (list.objects != null)

+            {

+                result.Objects = new List<IObjectData>();

+                foreach (cmisObjectType obj in list.objects)

+                {

+                    result.Objects.Add(Convert(obj));

+                }

+            }

+

+            result.HasMoreItems = list.hasMoreItems;

+            result.NumItems = Int64.Parse(list.numItems);

+

+            ConvertExtension(list, result);

+

+            return result;

+        }

+

+        public static IContentStream Convert(cmisContentStreamType contentStream)

+        {

+            if (contentStream == null) { return null; }

+

+            ContentStream result = new ContentStream();

+            if (contentStream.length != null)

+            {

+                result.Length = Int64.Parse(contentStream.length);

+            }

+            result.MimeType = contentStream.mimeType;

+            result.FileName = contentStream.filename;

+            // Todo: enable real streaming

+            result.Stream = new MemoryStream(contentStream.stream);

+

+            ConvertExtension(contentStream, result);

+

+            return result;

+        }

+

+        public static cmisContentStreamType Convert(IContentStream contentStream)

+        {

+            if (contentStream == null) { return null; }

+

+            cmisContentStreamType result = new cmisContentStreamType();

+            result.length = contentStream.Length.ToString();

+            result.mimeType = contentStream.MimeType;

+            result.filename = contentStream.FileName;

+            if (contentStream.Stream != null)

+            {

+                if (contentStream.Stream is MemoryStream)

+                {

+                    result.stream = ((MemoryStream)contentStream.Stream).ToArray();

+                }

+                else

+                {

+                    MemoryStream memStream = new MemoryStream();

+                    byte[] buffer = new byte[4096];

+                    int bytes;

+                    while ((bytes = contentStream.Stream.Read(buffer, 0, buffer.Length)) > 0)

+                    {

+                        memStream.Write(buffer, 0, bytes);

+                    }

+                    result.stream = memStream.ToArray();

+                }

+            }

+

+            return result;

+        }

+

+        public static IFailedToDeleteData Convert(deleteTreeResponseFailedToDelete failedToDelete)

+        {

+            if (failedToDelete == null) { return null; }

+

+            FailedToDeleteData result = new FailedToDeleteData();

+            if (failedToDelete.objectIds != null)

+            {

+                result.Ids = new List<string>();

+                foreach (string id in failedToDelete.objectIds)

+                {

+                    result.Ids.Add(id);

+                }

+            }

+

+            ConvertExtension(failedToDelete, result);

+

+            return result;

+        }

+

+        public static T[] ConvertList<T>(IList<T> list)

+        {

+            if (list == null) { return null; }

+

+            T[] result = new T[list.Count];

+            for (int i = 0; i < list.Count; i++)

+            {

+                result[i] = list[i];

+            }

+

+            return result;

+        }

+

+        /// <summary>

+        /// Converts an extension.

+        /// </summary> 

+        public static void ConvertExtension(object source, IExtensionsData target)

+        {

+            if (source == null || target == null) { return; }

+

+            Type type = source.GetType();

+            PropertyInfo propInfo = type.GetProperty("Any");

+            if (propInfo == null)

+            {

+                return;

+            }

+

+            XmlElement[] elements = (XmlElement[])propInfo.GetValue(source, null);

+            if (elements == null)

+            {

+                return;

+            }

+

+            target.Extensions = new List<ICmisExtensionElement>();

+            foreach (XmlElement xmlElement in elements)

+            {

+                ICmisExtensionElement element = CreateCmisExtensionElement(xmlElement);

+                if (element != null)

+                {

+                    target.Extensions.Add(element);

+                }

+            }

+        }

+

+        private static ICmisExtensionElement CreateCmisExtensionElement(XmlNode xmlElement)

+        {

+            CmisExtensionElement result = new CmisExtensionElement();

+            result.Name = xmlElement.Name;

+            result.Namespace = xmlElement.NamespaceURI;

+

+            if (xmlElement.Attributes != null && xmlElement.Attributes.Count > 0)

+            {

+                result.Attributes = new Dictionary<string, string>();

+                foreach (XmlAttribute attr in xmlElement.Attributes)

+                {

+                    result.Attributes[attr.Name] = attr.Value;

+                }

+            }

+

+            if (xmlElement.HasChildNodes)

+            {

+                result.Children = new List<ICmisExtensionElement>();

+                foreach (XmlNode node in xmlElement.ChildNodes)

+                {

+                    ICmisExtensionElement element = CreateCmisExtensionElement(node);

+                    if (element != null)

+                    {

+                        result.Children.Add(element);

+                    }

+                }

+            }

+            else

+            {

+                result.Value = xmlElement.Value;

+            }

+

+            return result;

+        }

+

+        /// <summary>

+        /// Converts an extension.

+        /// </summary>

+        public static cmisExtensionType ConvertExtension(IExtensionsData extension)

+        {

+            if (extension == null || extension.Extensions == null) { return null; }

+

+            XmlDocument doc = new XmlDocument();

+

+            List<XmlElement> elements = new List<XmlElement>();

+            foreach (ICmisExtensionElement element in extension.Extensions)

+            {

+                if (element == null) { continue; }

+                elements.Add(CreateXmlElement(doc, element));

+            }

+

+            cmisExtensionType result = new cmisExtensionType();

+            result.Any = elements.ToArray();

+

+            return result;

+        }

+

+        public static void ConvertExtension(IExtensionsData source, object target)

+        {

+            if (source == null || source.Extensions == null || target == null)

+            {

+                return;

+            }

+

+            Type type = target.GetType();

+            PropertyInfo propInfo = type.GetProperty("Any");

+            if (propInfo == null)

+            {

+                return;

+            }

+

+            XmlDocument doc = new XmlDocument();

+

+            List<XmlElement> elements = new List<XmlElement>();

+            foreach (ICmisExtensionElement element in source.Extensions)

+            {

+                if (element == null) { continue; }

+                elements.Add(CreateXmlElement(doc, element));

+            }

+

+            propInfo.SetValue(target, elements.ToArray(), null);

+        }

+

+        private static XmlElement CreateXmlElement(XmlDocument doc, ICmisExtensionElement element)

+        {

+            if (element == null)

+            {

+                return null;

+            }

+

+            XmlElement result = doc.CreateElement(element.Name, element.Namespace);

+

+            if (element.Attributes != null)

+            {

+                foreach (string key in element.Attributes.Keys)

+                {

+                    XmlAttribute attr = doc.CreateAttribute(key);

+                    attr.Value = element.Attributes[key];

+                    result.Attributes.Append(attr);

+                }

+            }

+

+            if (element.Value != null)

+            {

+                result.Value = element.Value;

+            }

+            else if (element.Children != null)

+            {

+                List<XmlElement> children = new List<XmlElement>();

+                foreach (ICmisExtensionElement child in element.Children)

+                {

+                    XmlElement xml = CreateXmlElement(doc, child);

+                    if (xml != null)

+                    {

+                        result.AppendChild(xml);

+                    }

+                }

+            }

+

+            return result;

+        }

+

+        public static string GetXmlEnumAttributeValue(Enum xsdEnum)

+        {

+            FieldInfo fieldInfo = xsdEnum.GetType().GetField(xsdEnum.ToString());

+            XmlEnumAttribute[] xmlAttr = fieldInfo.GetCustomAttributes(typeof(XmlEnumAttribute), false) as XmlEnumAttribute[];

+

+            if (xmlAttr.Length == 0)

+            {

+                return null;

+            }

+

+            return xmlAttr[0].Name;

+        }

+    }

+}

diff --git a/DotCMIS/binding/http.cs b/DotCMIS/binding/http.cs
new file mode 100644
index 0000000..a3864a7
--- /dev/null
+++ b/DotCMIS/binding/http.cs
@@ -0,0 +1,259 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Diagnostics;

+using System.IO;

+using System.Net;

+using DotCMIS.Binding.Impl;

+using DotCMIS.Enums;

+using DotCMIS.Exceptions;

+using System.Web;

+using System.Text;

+

+namespace DotCMIS.Binding

+{

+    internal static class HttpUtils

+    {

+        public delegate void Output(Stream stream);

+

+        public static Response InvokeGET(UrlBuilder url, BindingSession session)

+        {

+            return Invoke(url, "GET", null, null, session, null, null);

+        }

+

+        public static Response InvokeGET(UrlBuilder url, BindingSession session, int? offset, int? length)

+        {

+            return Invoke(url, "GET", null, null, session, offset, length);

+        }

+

+        public static Response InvokePOST(UrlBuilder url, String contentType, Output writer, BindingSession session)

+        {

+            return Invoke(url, "POST", contentType, writer, session, null, null);

+        }

+

+        public static Response InvokePUT(UrlBuilder url, String contentType, Output writer, BindingSession session)

+        {

+            return Invoke(url, "PUT", contentType, writer, session, null, null);

+        }

+

+        public static Response InvokeDELETE(UrlBuilder url, BindingSession session)

+        {

+            return Invoke(url, "DELETE", null, null, session, null, null);

+        }

+

+        private static Response Invoke(UrlBuilder url, String method, String contentType, Output writer, BindingSession session,

+                int? offset, int? length)

+        {

+            try

+            {

+                // log before connect

+                Trace.WriteLine(method + " " + url);

+

+                // create connection           

+                HttpWebRequest conn = (HttpWebRequest)WebRequest.Create(url.Url);

+                conn.Method = method;

+

+                // set content type

+                if (contentType != null)

+                {

+                    conn.ContentType = contentType;

+                }

+

+                // authenticate

+                AbstractAuthenticationProvider authProvider = session.GetAuthenticationProvider();

+                if (authProvider != null)

+                {

+                    conn.PreAuthenticate = true;

+                    authProvider.Authenticate(conn);

+                }

+

+                // range

+                if (offset != null && length != null)

+                {

+                    conn.AddRange(offset ?? 0, offset + length - 1 ?? 0);

+                }

+                else if (offset != null)

+                {

+                    conn.AddRange(offset ?? 0);

+                }

+

+                // send data

+                if (writer != null)

+                {

+                    conn.SendChunked = true;

+                    conn.AllowWriteStreamBuffering = false;

+                    Stream requestStream = conn.GetRequestStream();

+                    writer(requestStream);

+                    requestStream.Close();

+                }

+

+                // connect

+                try

+                {

+                    HttpWebResponse response = (HttpWebResponse)conn.GetResponse();

+                    return new Response(response);

+                }

+                catch (WebException we)

+                {

+                    return new Response(we);

+                }

+            }

+            catch (Exception e)

+            {

+                throw new CmisConnectionException("Cannot access " + url + ": " + e.Message, e);

+            }

+        }

+

+        internal class Response

+        {

+            private WebResponse response;

+

+            public HttpStatusCode StatusCode { get; private set; }

+            public string Message { get; private set; }

+            public Stream Stream { get; private set; }

+            public string ErrorContent { get; private set; }

+            public string ContentType { get; private set; }

+            public long? ContentLength { get; private set; }

+

+            public Response(HttpWebResponse httpResponse)

+            {

+                this.response = httpResponse;

+                StatusCode = httpResponse.StatusCode;

+                Message = httpResponse.StatusDescription;

+                ContentType = httpResponse.ContentType;

+                ContentLength = httpResponse.ContentLength == -1 ? null : (long?)httpResponse.ContentLength;

+

+                if (httpResponse.StatusCode == HttpStatusCode.OK ||

+                    httpResponse.StatusCode == HttpStatusCode.Created ||

+                    httpResponse.StatusCode == HttpStatusCode.NonAuthoritativeInformation ||

+                    httpResponse.StatusCode == HttpStatusCode.PartialContent)

+                {

+                    Stream = new BufferedStream(httpResponse.GetResponseStream(), 64 * 1024);

+                }

+                else

+                {

+                    try { httpResponse.Close(); }

+                    catch (Exception) { }

+                }

+            }

+

+            public Response(WebException exception)

+            {

+                response = exception.Response;

+

+                if (response is HttpWebResponse)

+                {

+                    HttpWebResponse httpResponse = (HttpWebResponse)response;

+                    StatusCode = httpResponse.StatusCode;

+                    Message = httpResponse.StatusDescription;

+                    ContentType = httpResponse.ContentType;

+

+                    if (ContentType != null && ContentType.ToLower().StartsWith("text/"))

+                    {

+                        StringBuilder sb = new StringBuilder();

+

+                        using (StreamReader sr = new StreamReader(httpResponse.GetResponseStream()))

+                        {

+                            string s;

+                            while ((s = sr.ReadLine()) != null)

+                            {

+                                sb.Append(s);

+                                sb.Append('\n');

+                            }

+                        }

+

+                        ErrorContent = sb.ToString();

+                    }

+                }

+                else

+                {

+                    StatusCode = HttpStatusCode.InternalServerError;

+                    Message = exception.Status.ToString();

+                }

+

+                try { response.Close(); }

+                catch (Exception) { }

+            }

+        }

+    }

+

+    internal class UrlBuilder

+    {

+        private UriBuilder uri;

+

+        public Uri Url

+        {

+            get { return uri.Uri; }

+        }

+

+        public UrlBuilder(string url)

+        {

+            if (url == null)

+            {

+                throw new ArgumentNullException("url");

+            }

+

+            uri = new UriBuilder(url);

+        }

+

+        public UrlBuilder AddParameter(string name, object value)

+        {

+            if ((name == null) || (value == null))

+            {

+                return this;

+            }

+

+            string valueStr = HttpUtility.UrlEncode(NormalizeParameter(value));

+

+            if (uri.Query != null && uri.Query.Length > 1)

+            {

+                uri.Query = uri.Query.Substring(1) + "&" + name + "=" + valueStr;

+            }

+            else

+            {

+                uri.Query = name + "=" + valueStr;

+            }

+

+            return this;

+        }

+

+        public static string NormalizeParameter(object value)

+        {

+            if (value == null)

+            {

+                return null;

+            }

+            else if (value is Enum)

+            {

+                return ((Enum)value).GetCmisValue();

+            }

+            else if (value is bool)

+            {

+                return (bool)value ? "true" : "false";

+            }

+

+            return value.ToString();

+        }

+

+        public override string ToString()

+        {

+            return Url.ToString();

+        }

+    }

+}

diff --git a/DotCMIS/binding/services.cs b/DotCMIS/binding/services.cs
new file mode 100644
index 0000000..47c67ce
--- /dev/null
+++ b/DotCMIS/binding/services.cs
@@ -0,0 +1,180 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using DotCMIS.Data;

+using DotCMIS.Data.Extensions;

+using DotCMIS.Enums;

+

+namespace DotCMIS.Binding.Services

+{

+    public interface IRepositoryService

+    {

+        IList<IRepositoryInfo> GetRepositoryInfos(IExtensionsData extension);

+

+        IRepositoryInfo GetRepositoryInfo(string repositoryId, IExtensionsData extension);

+

+        ITypeDefinitionList GetTypeChildren(string repositoryId, string typeId, bool? includePropertyDefinitions,

+            long? maxItems, long? skipCount, IExtensionsData extension);

+

+        IList<ITypeDefinitionContainer> GetTypeDescendants(string repositoryId, string typeId, long? depth,

+            bool? includePropertyDefinitions, IExtensionsData extension);

+

+        ITypeDefinition GetTypeDefinition(string repositoryId, string typeId, IExtensionsData extension);

+    }

+

+    public interface INavigationService

+    {

+        IObjectInFolderList GetChildren(string repositoryId, string folderId, string filter, string orderBy,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, long? maxItems, long? skipCount, IExtensionsData extension);

+

+        IList<IObjectInFolderContainer> GetDescendants(string repositoryId, string folderId, long? depth, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, IExtensionsData extension);

+

+        IList<IObjectInFolderContainer> GetFolderTree(string repositoryId, string folderId, long? depth, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, IExtensionsData extension);

+

+        IList<IObjectParentData> GetObjectParents(string repositoryId, string objectId, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includeRelativePathSegment, IExtensionsData extension);

+

+        IObjectData GetFolderParent(string repositoryId, string folderId, string filter, ExtensionsData extension);

+

+        IObjectList GetCheckedOutDocs(string repositoryId, string folderId, string filter, string orderBy,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension);

+    }

+

+    public interface IObjectService

+    {

+        string CreateDocument(string repositoryId, IProperties properties, string folderId, IContentStream contentStream,

+            VersioningState? versioningState, IList<string> policies, IAcl addAces, IAcl removeAces, IExtensionsData extension);

+

+        string CreateDocumentFromSource(string repositoryId, string sourceId, IProperties properties, string folderId,

+            VersioningState? versioningState, IList<string> policies, IAcl addAces, IAcl removeAces, IExtensionsData extension);

+

+        string CreateFolder(string repositoryId, IProperties properties, string folderId, IList<string> policies,

+            IAcl addAces, IAcl removeAces, IExtensionsData extension);

+

+        string CreateRelationship(string repositoryId, IProperties properties, IList<string> policies, IAcl addAces,

+            IAcl removeAces, IExtensionsData extension);

+

+        string CreatePolicy(string repositoryId, IProperties properties, string folderId, IList<string> policies,

+            IAcl addAces, IAcl removeAces, IExtensionsData extension);

+

+        IAllowableActions GetAllowableActions(string repositoryId, string objectId, IExtensionsData extension);

+

+        IProperties GetProperties(string repositoryId, string objectId, string filter, IExtensionsData extension);

+

+        IList<IRenditionData> GetRenditions(string repositoryId, string objectId, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension);

+

+        IObjectData GetObject(string repositoryId, string objectId, string filter, bool? includeAllowableActions,

+            IncludeRelationships? includeRelationships, string renditionFilter, bool? includePolicyIds,

+            bool? includeAcl, IExtensionsData extension);

+

+        IObjectData GetObjectByPath(string repositoryId, string path, string filter, bool? includeAllowableActions,

+            IncludeRelationships? includeRelationships, string renditionFilter, bool? includePolicyIds, bool? includeAcl,

+            IExtensionsData extension);

+

+        IContentStream GetContentStream(string repositoryId, string objectId, string streamId, long? offset, long? length,

+            IExtensionsData extension);

+

+        void UpdateProperties(string repositoryId, ref string objectId, ref string changeToken, IProperties properties,

+            IExtensionsData extension);

+

+        void MoveObject(string repositoryId, ref string objectId, string targetFolderId, string sourceFolderId,

+            IExtensionsData extension);

+

+        void DeleteObject(string repositoryId, string objectId, bool? allVersions, IExtensionsData extension);

+

+        IFailedToDeleteData DeleteTree(string repositoryId, string folderId, bool? allVersions, UnfileObject? unfileObjects,

+            bool? continueOnFailure, ExtensionsData extension);

+

+        void SetContentStream(string repositoryId, ref string objectId, bool? overwriteFlag, ref string changeToken,

+            IContentStream contentStream, IExtensionsData extension);

+

+        void DeleteContentStream(string repositoryId, ref string objectId, ref string changeToken, IExtensionsData extension);

+    }

+

+    public interface IVersioningService

+    {

+        void CheckOut(string repositoryId, ref string objectId, IExtensionsData extension, out bool? contentCopied);

+

+        void CancelCheckOut(string repositoryId, string objectId, IExtensionsData extension);

+

+        void CheckIn(string repositoryId, ref string objectId, bool? major, IProperties properties,

+            IContentStream contentStream, string checkinComment, List<string> policies, IAcl addAces, IAcl removeAces,

+            IExtensionsData extension);

+

+        IObjectData GetObjectOfLatestVersion(string repositoryId, string objectId, string versionSeriesId, bool major,

+            string filter, bool? includeAllowableActions, IncludeRelationships? includeRelationships,

+            string renditionFilter, bool? includePolicyIds, bool? includeAcl, IExtensionsData extension);

+

+        IProperties GetPropertiesOfLatestVersion(string repositoryId, string objectId, string versionSeriesId, bool major,

+            string filter, IExtensionsData extension);

+

+        IList<IObjectData> GetAllVersions(string repositoryId, string objectId, string versionSeriesId, string filter,

+            bool? includeAllowableActions, IExtensionsData extension);

+    }

+

+    public interface IRelationshipService

+    {

+        IObjectList GetObjectRelationships(string repositoryId, string objectId, bool? includeSubRelationshipTypes,

+            RelationshipDirection? relationshipDirection, string typeId, string filter, bool? includeAllowableActions,

+            long? maxItems, long? skipCount, IExtensionsData extension);

+    }

+

+    public interface IDiscoveryService

+    {

+        IObjectList Query(string repositoryId, string statement, bool? searchAllVersions,

+           bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+           long? maxItems, long? skipCount, IExtensionsData extension);

+

+        IObjectList GetContentChanges(string repositoryId, ref string changeLogToken, bool? includeProperties,

+           string filter, bool? includePolicyIds, bool? includeAcl, long? maxItems, IExtensionsData extension);

+    }

+

+    public interface IMultiFilingService

+    {

+        void AddObjectToFolder(string repositoryId, string objectId, string folderId, bool? allVersions, IExtensionsData extension);

+

+        void RemoveObjectFromFolder(string repositoryId, string objectId, string folderId, IExtensionsData extension);

+    }

+

+    public interface IAclService

+    {

+        IAcl GetAcl(string repositoryId, string objectId, bool? onlyBasicPermissions, IExtensionsData extension);

+

+        IAcl ApplyAcl(string repositoryId, string objectId, IAcl addAces, IAcl removeAces, AclPropagation? aclPropagation,

+            IExtensionsData extension);

+    }

+

+    public interface IPolicyService

+    {

+        void ApplyPolicy(string repositoryId, string policyId, string objectId, IExtensionsData extension);

+

+        void RemovePolicy(string repositoryId, string policyId, string objectId, IExtensionsData extension);

+

+        IList<IObjectData> GetAppliedPolicies(string repositoryId, string objectId, string filter, IExtensionsData extension);

+    }

+}

diff --git a/DotCMIS/binding/webservices/webservices.cs b/DotCMIS/binding/webservices/webservices.cs
new file mode 100644
index 0000000..cc02b52
--- /dev/null
+++ b/DotCMIS/binding/webservices/webservices.cs
@@ -0,0 +1,1480 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.ServiceModel;

+using DotCMIS.Binding.Impl;

+using DotCMIS.Binding.Services;

+using DotCMIS.CMISWebServicesReference;

+using DotCMIS.Data;

+using DotCMIS.Data.Extensions;

+using DotCMIS.Exceptions;

+using DotCMIS.Enums;

+

+namespace DotCMIS.Binding.WebServices

+{

+    /// <summary>

+    /// Web Services binding SPI.

+    /// </summary>

+    internal class CmisWebServicesSpi : ICmisSpi

+    {

+        private RepositoryService repositoryService;

+        private NavigationService navigationService;

+        private ObjectService objectService;

+        private VersioningService versioningService;

+        private DiscoveryService discoveryService;

+        private MultiFilingService multiFilingService;

+        private RelationshipService relationshipService;

+        private PolicyService policyService;

+        private AclService aclService;

+

+        public void initialize(BindingSession session)

+        {

+            PortProvider provider = new PortProvider(session);

+

+            repositoryService = new RepositoryService(session, provider);

+            navigationService = new NavigationService(session, provider);

+            objectService = new ObjectService(session, provider);

+            versioningService = new VersioningService(session, provider);

+            discoveryService = new DiscoveryService(session, provider);

+            multiFilingService = new MultiFilingService(session, provider);

+            relationshipService = new RelationshipService(session, provider);

+            policyService = new PolicyService(session, provider);

+            aclService = new AclService(session, provider);

+        }

+

+        public IRepositoryService GetRepositoryService()

+        {

+            return repositoryService;

+        }

+

+        public INavigationService GetNavigationService()

+        {

+            return navigationService;

+        }

+

+        public IObjectService GetObjectService()

+        {

+            return objectService;

+        }

+

+        public IVersioningService GetVersioningService()

+        {

+            return versioningService;

+        }

+

+        public IRelationshipService GetRelationshipService()

+        {

+            return relationshipService;

+        }

+

+        public IDiscoveryService GetDiscoveryService()

+        {

+            return discoveryService;

+        }

+

+        public IMultiFilingService GetMultiFilingService()

+        {

+            return multiFilingService;

+        }

+

+        public IAclService GetAclService()

+        {

+            return aclService;

+        }

+

+        public IPolicyService GetPolicyService()

+        {

+            return policyService;

+        }

+

+        public void ClearAllCaches()

+        {

+            // nothing to do

+        }

+

+        public void ClearRepositoryCache(string repositoryId)

+        {

+            // nothing to do

+        }

+

+        public void Close()

+        {

+            // nothing to do

+        }

+    }

+

+    internal class PortProvider

+    {

+        [ThreadStatic]

+        private static IDictionary<int, IDictionary<string, object>> Services;

+

+        private BindingSession session;

+

+        public PortProvider(BindingSession session)

+        {

+            this.session = session;

+        }

+

+        private static IDictionary<string, object> GetServiceDictionary(BindingSession session)

+        {

+            if (Services == null)

+            {

+                Services = new Dictionary<int, IDictionary<string, object>>();

+            }

+

+            IDictionary<string, object> serviceDict;

+            if (Services.TryGetValue(session.GetHashCode(), out serviceDict))

+            {

+                return serviceDict;

+            }

+

+            serviceDict = new Dictionary<string, object>();

+            Services[session.GetHashCode()] = serviceDict;

+

+            return serviceDict;

+        }

+

+        public RepositoryServicePortClient GetRepositoryServicePort()

+        {

+            return (RepositoryServicePortClient)GetPortObject(SessionParameter.WebServicesRepositoryService);

+        }

+

+        public NavigationServicePortClient GetNavigationService()

+        {

+            return (NavigationServicePortClient)GetPortObject(SessionParameter.WebServicesNavigationService);

+        }

+

+        public ObjectServicePortClient GetObjectService()

+        {

+            return (ObjectServicePortClient)GetPortObject(SessionParameter.WebServicesObjectService);

+        }

+

+        public VersioningServicePortClient GetVersioningService()

+        {

+            return (VersioningServicePortClient)GetPortObject(SessionParameter.WebServicesVersioningService);

+        }

+

+        public DiscoveryServicePortClient GetDiscoveryService()

+        {

+            return (DiscoveryServicePortClient)GetPortObject(SessionParameter.WebServicesDiscoveryService);

+        }

+

+        public MultiFilingServicePortClient GetMultiFilingService()

+        {

+            return (MultiFilingServicePortClient)GetPortObject(SessionParameter.WebServicesMultifilingService);

+        }

+

+        public RelationshipServicePortClient GetRelationshipService()

+        {

+            return (RelationshipServicePortClient)GetPortObject(SessionParameter.WebServicesRelationshipService);

+        }

+

+        public PolicyServicePortClient GetPolicyService()

+        {

+            return (PolicyServicePortClient)GetPortObject(SessionParameter.WebServicesPolicyService);

+        }

+

+        public ACLServicePortClient GetAclService()

+        {

+            return (ACLServicePortClient)GetPortObject(SessionParameter.WebServicesAclService);

+        }

+

+        private object GetPortObject(string serviceKey)

+        {

+            IDictionary<string, object> servicesDict = GetServiceDictionary(session);

+

+            object portObject;

+            if (!servicesDict.TryGetValue(serviceKey, out portObject))

+            {

+                portObject = InitServiceObject(serviceKey);

+                servicesDict[serviceKey] = portObject;

+            }

+

+            return portObject;

+        }

+

+        private object InitServiceObject(string serviceKey)

+        {

+            object portObject = null;

+

+            BasicHttpBinding binding = new BasicHttpBinding();

+            binding.MessageEncoding = WSMessageEncoding.Mtom;

+            binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;

+            binding.TransferMode = TransferMode.Streamed;

+

+            long messageSize = session.GetValue(SessionParameter.MessageSize, 4 * 1024 * 1024);

+            binding.MaxReceivedMessageSize = messageSize;

+            binding.MaxBufferSize = (messageSize > Int32.MaxValue ? Int32.MaxValue : (int)messageSize);

+

+            if (serviceKey == SessionParameter.WebServicesRepositoryService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesRepositoryService) as string;

+                portObject = new RepositoryServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesNavigationService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesNavigationService) as string;

+                portObject = new NavigationServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesObjectService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesObjectService) as string;

+                portObject = new ObjectServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesVersioningService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesVersioningService) as string;

+                portObject = new VersioningServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesDiscoveryService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesDiscoveryService) as string;

+                portObject = new DiscoveryServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesRelationshipService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesRelationshipService) as string;

+                portObject = new RelationshipServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesMultifilingService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesMultifilingService) as string;

+                portObject = new MultiFilingServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesPolicyService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesPolicyService) as string;

+                portObject = new PolicyServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+            else if (serviceKey == SessionParameter.WebServicesAclService)

+            {

+                string wsdlUrl = session.GetValue(SessionParameter.WebServicesAclService) as string;

+                portObject = new ACLServicePortClient(binding, new EndpointAddress(wsdlUrl));

+            }

+

+            AbstractAuthenticationProvider authenticationProvider = session.GetAuthenticationProvider();

+            if (authenticationProvider != null)

+            {

+                authenticationProvider.Authenticate(portObject);

+            }

+

+            return portObject;

+        }

+    }

+

+    /// <summary>

+    /// Common service methods.

+    /// </summary>

+    internal abstract class AbstractWebServicesService

+    {

+        protected BindingSession Session { get; set; }

+

+        protected PortProvider Provider { get; set; }

+

+        protected CmisBaseException ConvertException(FaultException<cmisFaultType> fault)

+        {

+            if ((fault == null) || (fault.Detail == null))

+            {

+                return new CmisRuntimeException("CmisException has no fault!");

+            }

+

+            String msg = fault.Detail.message;

+            long? code = null;

+

+            try

+            {

+                code = Int64.Parse(fault.Detail.code);

+            }

+            catch (Exception)

+            {

+                // ignore

+            }

+

+            switch (fault.Detail.type)

+            {

+                case enumServiceException.constraint:

+                    return new CmisConstraintException(msg, code);

+                case enumServiceException.contentAlreadyExists:

+                    return new CmisContentAlreadyExistsException(msg, code);

+                case enumServiceException.filterNotValid:

+                    return new CmisFilterNotValidException(msg, code);

+                case enumServiceException.invalidArgument:

+                    return new CmisInvalidArgumentException(msg, code);

+                case enumServiceException.nameConstraintViolation:

+                    return new CmisNameConstraintViolationException(msg, code);

+                case enumServiceException.notSupported:

+                    return new CmisNotSupportedException(msg, code);

+                case enumServiceException.objectNotFound:

+                    return new CmisObjectNotFoundException(msg, code);

+                case enumServiceException.permissionDenied:

+                    return new CmisPermissionDeniedException(msg, code);

+                case enumServiceException.runtime:

+                    return new CmisRuntimeException(msg, code);

+                case enumServiceException.storage:

+                    return new CmisStorageException(msg, code);

+                case enumServiceException.streamNotSupported:

+                    return new CmisStreamNotSupportedException(msg, code);

+                case enumServiceException.updateConflict:

+                    return new CmisUpdateConflictException(msg, code);

+                case enumServiceException.versioning:

+                    return new CmisVersioningException(msg, code);

+            }

+

+            return new CmisRuntimeException("Unknown exception[" + fault.Detail.type + "]: " + msg);

+        }

+    }

+

+    internal class RepositoryService : AbstractWebServicesService, IRepositoryService

+    {

+        public RepositoryService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public IList<IRepositoryInfo> GetRepositoryInfos(IExtensionsData extension)

+        {

+            RepositoryServicePortClient port = Provider.GetRepositoryServicePort();

+

+            try

+            {

+                cmisRepositoryEntryType[] entries = port.getRepositories(Converter.ConvertExtension(extension));

+

+                if (entries == null)

+                {

+                    return null;

+                }

+

+                IList<IRepositoryInfo> result = new List<IRepositoryInfo>();

+                foreach (cmisRepositoryEntryType entry in entries)

+                {

+                    cmisRepositoryInfoType info = port.getRepositoryInfo(entry.repositoryId, null);

+                    result.Add(Converter.Convert(info));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IRepositoryInfo GetRepositoryInfo(string repositoryId, IExtensionsData extension)

+        {

+            RepositoryServicePortClient port = Provider.GetRepositoryServicePort();

+

+            try

+            {

+                return Converter.Convert(port.getRepositoryInfo(repositoryId, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public ITypeDefinitionList GetTypeChildren(string repositoryId, string typeId, bool? includePropertyDefinitions,

+                long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            RepositoryServicePortClient port = Provider.GetRepositoryServicePort();

+

+            try

+            {

+                return Converter.Convert(port.getTypeChildren(repositoryId, typeId, includePropertyDefinitions,

+                    maxItems.ToString(), skipCount.ToString(), Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IList<ITypeDefinitionContainer> GetTypeDescendants(string repositoryId, string typeId, long? depth,

+                bool? includePropertyDefinitions, IExtensionsData extension)

+        {

+            RepositoryServicePortClient port = Provider.GetRepositoryServicePort();

+

+            try

+            {

+                cmisTypeContainer[] descendants = port.getTypeDescendants(

+                    repositoryId, typeId, depth.ToString(), includePropertyDefinitions, Converter.ConvertExtension(extension));

+

+                if (descendants == null)

+                {

+                    return null;

+                }

+

+                List<ITypeDefinitionContainer> result = new List<ITypeDefinitionContainer>();

+                foreach (cmisTypeContainer container in descendants)

+                {

+                    result.Add(Converter.Convert(container));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public ITypeDefinition GetTypeDefinition(string repositoryId, string typeId, IExtensionsData extension)

+        {

+            RepositoryServicePortClient port = Provider.GetRepositoryServicePort();

+

+            try

+            {

+                return Converter.Convert(port.getTypeDefinition(repositoryId, typeId, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class NavigationService : AbstractWebServicesService, INavigationService

+    {

+        public NavigationService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public IObjectInFolderList GetChildren(string repositoryId, string folderId, string filter, string orderBy,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            NavigationServicePortClient port = Provider.GetNavigationService();

+

+            try

+            {

+                return Converter.Convert(port.getChildren(repositoryId, folderId, filter, orderBy, includeAllowableActions,

+                    (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships), renditionFilter,

+                    includePathSegment, maxItems.ToString(), skipCount.ToString(), Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IList<IObjectInFolderContainer> GetDescendants(string repositoryId, string folderId, long? depth, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, IExtensionsData extension)

+        {

+            NavigationServicePortClient port = Provider.GetNavigationService();

+

+            try

+            {

+                cmisObjectInFolderContainerType[] descendants = port.getDescendants(repositoryId, folderId, filter, depth.ToString(),

+                    includeAllowableActions, (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships),

+                    renditionFilter, includePathSegment, Converter.ConvertExtension(extension));

+

+                if (descendants == null)

+                {

+                    return null;

+                }

+

+                List<IObjectInFolderContainer> result = new List<IObjectInFolderContainer>();

+                foreach (cmisObjectInFolderContainerType container in descendants)

+                {

+                    result.Add(Converter.Convert(container));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IList<IObjectInFolderContainer> GetFolderTree(string repositoryId, string folderId, long? depth, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includePathSegment, IExtensionsData extension)

+        {

+            NavigationServicePortClient port = Provider.GetNavigationService();

+

+            try

+            {

+                cmisObjectInFolderContainerType[] descendants = port.getFolderTree(repositoryId, folderId, filter, depth.ToString(),

+                    includeAllowableActions, (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships),

+                    renditionFilter, includePathSegment, Converter.ConvertExtension(extension));

+

+                if (descendants == null)

+                {

+                    return null;

+                }

+

+                List<IObjectInFolderContainer> result = new List<IObjectInFolderContainer>();

+                foreach (cmisObjectInFolderContainerType container in descendants)

+                {

+                    result.Add(Converter.Convert(container));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IList<IObjectParentData> GetObjectParents(string repositoryId, string objectId, string filter,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            bool? includeRelativePathSegment, IExtensionsData extension)

+        {

+            NavigationServicePortClient port = Provider.GetNavigationService();

+

+            try

+            {

+                cmisObjectParentsType[] parents = port.getObjectParents(repositoryId, objectId, filter,

+                    includeAllowableActions, (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships),

+                    renditionFilter, includeRelativePathSegment, Converter.ConvertExtension(extension));

+

+                if (parents == null)

+                {

+                    return null;

+                }

+

+                List<IObjectParentData> result = new List<IObjectParentData>();

+                foreach (cmisObjectParentsType parent in parents)

+                {

+                    result.Add(Converter.Convert(parent));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IObjectData GetFolderParent(string repositoryId, string folderId, string filter, ExtensionsData extension)

+        {

+            NavigationServicePortClient port = Provider.GetNavigationService();

+

+            try

+            {

+                return Converter.Convert(port.getFolderParent(repositoryId, folderId, filter, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IObjectList GetCheckedOutDocs(string repositoryId, string folderId, string filter, string orderBy,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            NavigationServicePortClient port = Provider.GetNavigationService();

+

+            try

+            {

+                return Converter.Convert(port.getCheckedOutDocs(repositoryId, folderId, filter, orderBy, includeAllowableActions,

+                    (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships), renditionFilter,

+                    maxItems.ToString(), skipCount.ToString(), Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class ObjectService : AbstractWebServicesService, IObjectService

+    {

+        public ObjectService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public string CreateDocument(string repositoryId, IProperties properties, string folderId, IContentStream contentStream,

+            VersioningState? versioningState, IList<string> policies, IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                string objectId = port.createDocument(repositoryId, Converter.Convert(properties), folderId, Converter.Convert(contentStream),

+                    (enumVersioningState?)CmisValue.CmisToSerializerEnum(versioningState), Converter.ConvertList(policies),

+                    Converter.Convert(addAces), Converter.Convert(removeAces), ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+

+                return objectId;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public string CreateDocumentFromSource(string repositoryId, string sourceId, IProperties properties, string folderId,

+            VersioningState? versioningState, IList<string> policies, IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                string objectId = port.createDocumentFromSource(repositoryId, sourceId, Converter.Convert(properties), folderId,

+                    (enumVersioningState?)CmisValue.CmisToSerializerEnum(versioningState), Converter.ConvertList(policies),

+                    Converter.Convert(addAces), Converter.Convert(removeAces), ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+

+                return objectId;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public string CreateFolder(string repositoryId, IProperties properties, string folderId, IList<string> policies,

+            IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                string objectId = port.createFolder(repositoryId, Converter.Convert(properties), folderId,

+                    Converter.ConvertList(policies), Converter.Convert(addAces), Converter.Convert(removeAces), ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+

+                return objectId;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public string CreateRelationship(string repositoryId, IProperties properties, IList<string> policies, IAcl addAces,

+            IAcl removeAces, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                string objectId = port.createRelationship(repositoryId, Converter.Convert(properties), Converter.ConvertList(policies),

+                    Converter.Convert(addAces), Converter.Convert(removeAces), ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+

+                return objectId;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+

+        }

+

+        public string CreatePolicy(string repositoryId, IProperties properties, string folderId, IList<string> policies,

+            IAcl addAces, IAcl removeAces, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                string objectId = port.createPolicy(repositoryId, Converter.Convert(properties), folderId,

+                    Converter.ConvertList(policies), Converter.Convert(addAces), Converter.Convert(removeAces), ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+

+                return objectId;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IAllowableActions GetAllowableActions(string repositoryId, string objectId, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                return Converter.Convert(port.getAllowableActions(repositoryId, objectId, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IProperties GetProperties(string repositoryId, string objectId, string filter, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                return Converter.Convert(port.getProperties(repositoryId, objectId, filter, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IList<IRenditionData> GetRenditions(string repositoryId, string objectId, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisRenditionType[] renditions = port.getRenditions(repositoryId, objectId, renditionFilter,

+                    maxItems.ToString(), skipCount.ToString(), Converter.ConvertExtension(extension));

+

+                if (renditions == null)

+                {

+                    return null;

+                }

+

+                IList<IRenditionData> result = new List<IRenditionData>();

+                foreach (cmisRenditionType rendition in renditions)

+                {

+                    result.Add(Converter.Convert(rendition));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IObjectData GetObject(string repositoryId, string objectId, string filter, bool? includeAllowableActions,

+            IncludeRelationships? includeRelationships, string renditionFilter, bool? includePolicyIds,

+            bool? includeAcl, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                return Converter.Convert(port.getObject(repositoryId, objectId, filter, includeAllowableActions,

+                    (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships), renditionFilter,

+                    includePolicyIds, includeAcl, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IObjectData GetObjectByPath(string repositoryId, string path, string filter, bool? includeAllowableActions,

+            IncludeRelationships? includeRelationships, string renditionFilter, bool? includePolicyIds, bool? includeAcl,

+            IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                return Converter.Convert(port.getObjectByPath(repositoryId, path, filter, includeAllowableActions,

+                    (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships), renditionFilter,

+                    includePolicyIds, includeAcl, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IContentStream GetContentStream(string repositoryId, string objectId, string streamId, long? offset, long? length,

+            IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                return Converter.Convert(port.getContentStream(

+                    repositoryId, objectId, streamId, offset.ToString(), length.ToString(), Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void UpdateProperties(string repositoryId, ref string objectId, ref string changeToken, IProperties properties,

+            IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.updateProperties(repositoryId, ref objectId, ref changeToken, Converter.Convert(properties), ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void MoveObject(string repositoryId, ref string objectId, string targetFolderId, string sourceFolderId,

+            IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.moveObject(repositoryId, ref objectId, targetFolderId, sourceFolderId, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void DeleteObject(string repositoryId, string objectId, bool? allVersions, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.deleteObject(repositoryId, objectId, allVersions, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IFailedToDeleteData DeleteTree(string repositoryId, string folderId, bool? allVersions, UnfileObject? unfileObjects,

+            bool? continueOnFailure, ExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                return Converter.Convert(port.deleteTree(repositoryId, folderId, allVersions,

+                    (enumUnfileObject?)CmisValue.CmisToSerializerEnum(unfileObjects), continueOnFailure,

+                    Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void SetContentStream(string repositoryId, ref string objectId, bool? overwriteFlag, ref string changeToken,

+            IContentStream contentStream, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.setContentStream(repositoryId, ref objectId, overwriteFlag, ref changeToken,

+                    Converter.Convert(contentStream), ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void DeleteContentStream(string repositoryId, ref string objectId, ref string changeToken, IExtensionsData extension)

+        {

+            ObjectServicePortClient port = Provider.GetObjectService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.deleteContentStream(repositoryId, ref objectId, ref changeToken, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class VersioningService : AbstractWebServicesService, IVersioningService

+    {

+        public VersioningService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public void CheckOut(string repositoryId, ref string objectId, IExtensionsData extension, out bool? contentCopied)

+        {

+            VersioningServicePortClient port = Provider.GetVersioningService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                contentCopied = port.checkOut(repositoryId, ref objectId, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void CancelCheckOut(string repositoryId, string objectId, IExtensionsData extension)

+        {

+            VersioningServicePortClient port = Provider.GetVersioningService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.cancelCheckOut(repositoryId, objectId, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void CheckIn(string repositoryId, ref string objectId, bool? major, IProperties properties,

+            IContentStream contentStream, string checkinComment, List<string> policies, IAcl addAces, IAcl removeAces,

+            IExtensionsData extension)

+        {

+            VersioningServicePortClient port = Provider.GetVersioningService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.checkIn(repositoryId, ref objectId, major, Converter.Convert(properties), Converter.Convert(contentStream),

+                    checkinComment, Converter.ConvertList(policies), Converter.Convert(addAces), Converter.Convert(removeAces),

+                    ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IObjectData GetObjectOfLatestVersion(string repositoryId, string objectId, string versionSeriesId, bool major,

+            string filter, bool? includeAllowableActions, IncludeRelationships? includeRelationships,

+            string renditionFilter, bool? includePolicyIds, bool? includeAcl, IExtensionsData extension)

+        {

+            VersioningServicePortClient port = Provider.GetVersioningService();

+

+            try

+            {

+                return Converter.Convert(port.getObjectOfLatestVersion(repositoryId, versionSeriesId, major, filter,

+                    includeAllowableActions, (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships),

+                    renditionFilter, includePolicyIds, includeAcl, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IProperties GetPropertiesOfLatestVersion(string repositoryId, string objectId, string versionSeriesId, bool major,

+            string filter, IExtensionsData extension)

+        {

+            VersioningServicePortClient port = Provider.GetVersioningService();

+

+            try

+            {

+                return Converter.Convert(port.getPropertiesOfLatestVersion(repositoryId, versionSeriesId, major, filter,

+                    Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IList<IObjectData> GetAllVersions(string repositoryId, string objectId, string versionSeriesId, string filter,

+            bool? includeAllowableActions, IExtensionsData extension)

+        {

+            VersioningServicePortClient port = Provider.GetVersioningService();

+

+            try

+            {

+                cmisObjectType[] versions = port.getAllVersions(repositoryId, versionSeriesId, filter, includeAllowableActions,

+                    Converter.ConvertExtension(extension));

+

+                if (versions == null)

+                {

+                    return null;

+                }

+

+                IList<IObjectData> result = new List<IObjectData>();

+                foreach (cmisObjectType version in versions)

+                {

+                    result.Add(Converter.Convert(version));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class RelationshipService : AbstractWebServicesService, IRelationshipService

+    {

+        public RelationshipService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public IObjectList GetObjectRelationships(string repositoryId, string objectId, bool? includeSubRelationshipTypes,

+            RelationshipDirection? relationshipDirection, string typeId, string filter, bool? includeAllowableActions,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            RelationshipServicePortClient port = Provider.GetRelationshipService();

+

+            try

+            {

+                return Converter.Convert(port.getObjectRelationships(repositoryId, objectId,

+                    includeSubRelationshipTypes == null ? true : (bool)includeSubRelationshipTypes,

+                    (enumRelationshipDirection?)CmisValue.CmisToSerializerEnum(relationshipDirection), typeId, filter, includeAllowableActions,

+                    maxItems.ToString(), skipCount.ToString(), Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class DiscoveryService : AbstractWebServicesService, IDiscoveryService

+    {

+        public DiscoveryService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public IObjectList Query(string repositoryId, string statement, bool? searchAllVersions,

+            bool? includeAllowableActions, IncludeRelationships? includeRelationships, string renditionFilter,

+            long? maxItems, long? skipCount, IExtensionsData extension)

+        {

+            DiscoveryServicePortClient port = Provider.GetDiscoveryService();

+

+            try

+            {

+                return Converter.Convert(port.query(repositoryId, statement, searchAllVersions, includeAllowableActions,

+                    (enumIncludeRelationships?)CmisValue.CmisToSerializerEnum(includeRelationships), renditionFilter,

+                    maxItems.ToString(), skipCount.ToString(), Converter.ConvertExtension(extension), null));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IObjectList GetContentChanges(string repositoryId, ref string changeLogToken, bool? includeProperties,

+           string filter, bool? includePolicyIds, bool? includeAcl, long? maxItems, IExtensionsData extension)

+        {

+            DiscoveryServicePortClient port = Provider.GetDiscoveryService();

+

+            try

+            {

+                return Converter.Convert(port.getContentChanges(repositoryId, ref changeLogToken, includeProperties, filter,

+                    includePolicyIds, includeAcl, maxItems.ToString(), Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class MultiFilingService : AbstractWebServicesService, IMultiFilingService

+    {

+        public MultiFilingService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public void AddObjectToFolder(string repositoryId, string objectId, string folderId, bool? allVersions, IExtensionsData extension)

+        {

+            MultiFilingServicePortClient port = Provider.GetMultiFilingService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.addObjectToFolder(repositoryId, objectId, folderId, allVersions == null ? true : (bool)allVersions, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void RemoveObjectFromFolder(string repositoryId, string objectId, string folderId, IExtensionsData extension)

+        {

+            MultiFilingServicePortClient port = Provider.GetMultiFilingService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.removeObjectFromFolder(repositoryId, objectId, folderId, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class AclService : AbstractWebServicesService, IAclService

+    {

+        public AclService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public IAcl GetAcl(string repositoryId, string objectId, bool? onlyBasicPermissions, IExtensionsData extension)

+        {

+            ACLServicePortClient port = Provider.GetAclService();

+

+            try

+            {

+                return Converter.Convert(port.getACL(repositoryId, objectId, onlyBasicPermissions, Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IAcl ApplyAcl(string repositoryId, string objectId, IAcl addAces, IAcl removeAces, AclPropagation? aclPropagation,

+            IExtensionsData extension)

+        {

+            ACLServicePortClient port = Provider.GetAclService();

+

+            try

+            {

+                return Converter.Convert(port.applyACL(repositoryId, objectId, Converter.Convert(addAces), Converter.Convert(removeAces),

+                    (enumACLPropagation?)CmisValue.CmisToSerializerEnum(aclPropagation), Converter.ConvertExtension(extension)));

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+

+    internal class PolicyService : AbstractWebServicesService, IPolicyService

+    {

+        public PolicyService(BindingSession session, PortProvider provider)

+        {

+            Session = session;

+            Provider = provider;

+        }

+

+        public void ApplyPolicy(string repositoryId, string policyId, string objectId, IExtensionsData extension)

+        {

+            PolicyServicePortClient port = Provider.GetPolicyService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.applyPolicy(repositoryId, policyId, objectId, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public void RemovePolicy(string repositoryId, string policyId, string objectId, IExtensionsData extension)

+        {

+            PolicyServicePortClient port = Provider.GetPolicyService();

+

+            try

+            {

+                cmisExtensionType cmisExtension = Converter.ConvertExtension(extension);

+

+                port.removePolicy(repositoryId, policyId, objectId, ref cmisExtension);

+

+                Converter.ConvertExtension(cmisExtension, extension);

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+

+        public IList<IObjectData> GetAppliedPolicies(string repositoryId, string objectId, string filter, IExtensionsData extension)

+        {

+            PolicyServicePortClient port = Provider.GetPolicyService();

+

+            try

+            {

+                cmisObjectType[] policies = port.getAppliedPolicies(repositoryId, objectId, filter, Converter.ConvertExtension(extension));

+

+                if (policies == null)

+                {

+                    return null;

+                }

+

+                List<IObjectData> result = new List<IObjectData>();

+                foreach (cmisObjectType policy in policies)

+                {

+                    result.Add(Converter.Convert(policy));

+                }

+

+                return result;

+            }

+            catch (FaultException<cmisFaultType> fe)

+            {

+                throw ConvertException(fe);

+            }

+            catch (Exception e)

+            {

+                throw new CmisRuntimeException("Error: " + e.Message, e);

+            }

+        }

+    }

+}

diff --git a/DotCMIS/client/client-impl.cs b/DotCMIS/client/client-impl.cs
new file mode 100644
index 0000000..739c9a2
--- /dev/null
+++ b/DotCMIS/client/client-impl.cs
@@ -0,0 +1,9 @@
+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+

+namespace DotCMIS.Client

+{

+ 

+}

diff --git a/DotCMIS/client/client-intf.cs b/DotCMIS/client/client-intf.cs
new file mode 100644
index 0000000..0d2b913
--- /dev/null
+++ b/DotCMIS/client/client-intf.cs
@@ -0,0 +1,245 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+using DotCMIS.Data;

+using DotCMIS.Enums;

+using DotCMIS.Data.Extensions;

+

+namespace DotCMIS.Client

+{

+    public interface IOperationContext { }

+

+    public interface ITree<T>

+    {

+        T Item { get; }

+        IList<ITree<T>> GetChildren();

+    }

+

+    public interface IObjectType : ITypeDefinition

+    {

+        bool IsBaseType { get; }

+        IObjectType BaseType { get; }

+        IObjectType ParentType { get; }

+        IItemIterable<IObjectType> GetChildren();

+        IList<ITree<IObjectType>> GetDescendants(int depth);

+    }

+

+    public interface IItemIterable<T>

+    {

+        IItemIterable<T> SkipTo(long position);

+        IItemIterable<T> GetPage();

+        IItemIterable<T> GetPage(int maxNumItems);

+        long PageNumItems { get; }

+        bool HasMoreItems { get; }

+        long TotalNumItems { get; }

+    }

+

+    public interface IObjectId

+    {

+        string Id { get; }

+    }

+

+    public interface IRendition : IRenditionData

+    {

+        IDocument GetRenditionDocument();

+        IDocument GetRenditionDocument(IOperationContext context);

+        IContentStream GetContentStream();

+    }

+

+    public interface IProperty : IPropertyData

+    {

+        bool IsMultiValued { get; }

+        PropertyType PropertyType { get; }

+        PropertyDefinition PropertyDefinition { get; }

+        V getValue<V>();

+        string GetValueAsString();

+        string getValuesAsString();

+    }

+

+    public interface ICmisObjectProperties

+    {

+        IList<IProperty> Properties { get; }

+        IProperty GetProperty(string id);

+        T getPropertyValue<T>(string id);

+

+        // convenience accessors

+        string Name { get; }

+        string CreatedBy { get; }

+        DateTime CreationDate { get; }

+        string LastModifiedBy { get; }

+        DateTime LastModificationDate { get; }

+        BaseTypeId BaseTypeId { get; }

+        IObjectType BaseType { get; }

+        IObjectType Type { get; }

+        string ChangeToken { get; }

+    }

+

+    public enum ExtensionLevel

+    {

+

+        Object, Properties, AllowableActions, Acl, Policies, ChangeEvent

+    }

+

+    public interface ICmisObject : IObjectId, ICmisObjectProperties

+    {

+        // object

+        IAllowableActions getAllowableActions();

+        IList<IRelationship> getRelationships();

+        IAcl getAcl();

+

+        // object service

+        void delete(bool allVersions);

+        ICmisObject updateProperties(IDictionary<string, object> properties);

+        IObjectId updateProperties(IDictionary<string, object> properties, bool refresh);

+

+        // renditions

+        IList<IRendition> getRenditions();

+

+        // policy service

+        void applyPolicy(IObjectId policyId);

+        void removePolicy(IObjectId policyIds);

+        IList<IPolicy> getPolicies();

+

+        // ACL service

+        IAcl applyAcl(IList<Ace> addAces, IList<Ace> removeAces, AclPropagation? aclPropagation);

+        IAcl addAcl(IList<Ace> addAces, AclPropagation? aclPropagation);

+        IAcl removeAcl(IList<Ace> removeAces, AclPropagation? aclPropagation);

+

+        // extensions

+        IList<ICmisExtensionElement> getExtensions(ExtensionLevel level);

+

+        long getRefreshTimestamp();

+        void refresh();

+        void refreshIfOld(long durationInMillis);

+    }

+

+    public interface IFileableCmisObject : ICmisObject

+    {

+        // object service

+        IFileableCmisObject move(IObjectId sourceFolderId, IObjectId targetFolderId);

+

+        // navigation service

+        IList<IFolder> GetParents();

+        IList<string> GetPaths();

+

+        // multifiling service

+        void addToFolder(IObjectId folderId, bool allVersions);

+        void removeFromFolder(IObjectId folderId);

+    }

+

+    public interface IDocumentProperties

+    {

+        bool? IsImmutable { get; }

+        bool? IsLatestVersion { get; }

+        bool? IsMajorVersion { get; }

+        bool? IsLatestMajorVersion { get; }

+        string VersionLabel { get; }

+        string VersionSeriesId { get; }

+        bool? VersionSeriesCheckedOut { get; }

+        string VersionSeriesCheckedOutBy { get; }

+        string VersionSeriesCheckedOutId { get; }

+        string CheckinComment { get; }

+        long ContentStreamLength { get; }

+        string ContentStreamMimeType { get; }

+        string ContentStreamFileName { get; }

+        string ContentStreamId { get; }

+    }

+

+    public interface IDocument : IFileableCmisObject, IDocumentProperties

+    {

+        void DeleteAllVersions();

+        IContentStream GetContentStream();

+        IContentStream GetContentStream(string streamId);

+        IDocument SetContentStream(IContentStream contentStream, bool overwrite);

+        IObjectId SetContentStream(IContentStream contentStream, bool overwrite, bool refresh);

+        IDocument DeleteContentStream();

+        IObjectId DeleteContentStream(bool refresh);

+        IObjectId CheckOut();

+        void CancelCheckOut();

+        IObjectId CheckIn(bool major, IDictionary<string, object> properties, IContentStream contentStream, string checkinComment,

+                IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces);

+        IObjectId checkIn(bool major, IDictionary<string, object> properties, IContentStream contentStream, string checkinComment);

+        IDocument GetObjectOfLatestVersion(bool major);

+        IDocument GetObjectOfLatestVersion(bool major, IOperationContext context);

+        IList<IDocument> GetAllVersions();

+        IList<IDocument> GetAllVersions(IOperationContext context);

+        IDocument Copy(IObjectId targetFolderId);

+        IDocument Copy(IObjectId targetFolderId, IDictionary<string, object> properties, VersioningState? versioningState,

+                IList<IPolicy> policies, IList<IAce> addACEs, IList<IAce> removeACEs, IOperationContext context);

+    }

+

+    public interface IFolderProperties

+    {

+        IList<IObjectType> AllowedChildObjectTypes { get; }

+    }

+

+    public interface IFolder : IFileableCmisObject, IFolderProperties

+    {

+        IDocument createDocument(IDictionary<string, object> properties, IContentStream contentStream, VersioningState? versioningState,

+                IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context);

+        IDocument createDocument(IDictionary<string, object> properties, IContentStream contentStream, VersioningState? versioningState);

+        IDocument createDocumentFromSource(IObjectId source, IDictionary<string, object> properties, VersioningState? versioningState,

+                IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces, IOperationContext context);

+        IDocument createDocumentFromSource(IObjectId source, IDictionary<string, object> properties, VersioningState? versioningState);

+        IFolder createFolder(IDictionary<string, object> properties, IList<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces,

+                IOperationContext context);

+        IFolder createFolder(IDictionary<string, object> properties);

+        IPolicy createPolicy(IDictionary<string, object> properties, List<IPolicy> policies, IList<IAce> addAces, IList<IAce> removeAces,

+                IOperationContext context);

+        IPolicy createPolicy(IDictionary<string, object> properties);

+        IList<string> deleteTree(bool allversions, UnfileObject? unfile, bool continueOnFailure);

+        IList<ITree<IFileableCmisObject>> GetFolderTree(int depth);

+        IList<ITree<IFileableCmisObject>> GetFolderTree(int depth, IOperationContext context);

+        IList<ITree<IFileableCmisObject>> GetDescendants(int depth);

+        IList<ITree<IFileableCmisObject>> GetDescendants(int depth, IOperationContext context);

+        IItemIterable<ICmisObject> GetChildren();

+        IItemIterable<ICmisObject> GetChildren(IOperationContext context);

+        bool IsRootFolder { get; }

+        IFolder FolderParent { get; }

+        string Path { get; }

+        IItemIterable<IDocument> GetCheckedOutDocs();

+        IItemIterable<IDocument> GetCheckedOutDocs(IOperationContext context);

+    }

+

+    public interface IPolicyProperties

+    {

+        string PolicyText { get; }

+    }

+

+    public interface IPolicy : IFileableCmisObject, IPolicyProperties

+    {

+    }

+

+    public interface IRelationshipProperties

+    {

+        IObjectId SourceId { get; }

+        IObjectId TargetId { get; }

+    }

+

+    public interface IRelationship : ICmisObject, IRelationshipProperties

+    {

+        ICmisObject GetSource();

+        ICmisObject GetSource(IOperationContext context);

+        ICmisObject GetTarget();

+        ICmisObject GetTarget(IOperationContext context);

+    }

+}

diff --git a/DotCMIS/const.cs b/DotCMIS/const.cs
new file mode 100644
index 0000000..b586e9b
--- /dev/null
+++ b/DotCMIS/const.cs
@@ -0,0 +1,357 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+

+namespace DotCMIS

+{

+    public static class SessionParameter

+    {

+        // ---- general parameter ----

+        public const string User = "org.apache.chemistry.dotcmis.user";

+        public const string Password = "org.apache.chemistry.dotcmis.password";

+

+        // ---- provider parameter ----

+        // Predefined binding types

+        public const string BindingType = "org.apache.chemistry.dotcmis.binding.spi.type";

+

+        // Class name of the binding class.

+        public const string BindingSpiClass = "org.apache.chemistry.dotcmis.binding.spi.classname";

+

+        // URL of the AtomPub service document.

+        public const string AtomPubUrl = "org.apache.chemistry.dotcmis.binding.atompub.url";

+

+        // WSDL URLs for Web Services.

+        public const string WebServicesRepositoryService = "org.apache.chemistry.dotcmis.binding.webservices.RepositoryService";

+        public const string WebServicesNavigationService = "org.apache.chemistry.dotcmis.binding.webservices.NavigationService";

+        public const string WebServicesObjectService = "org.apache.chemistry.dotcmis.binding.webservices.ObjectService";

+        public const string WebServicesVersioningService = "org.apache.chemistry.dotcmis.binding.webservices.VersioningService";

+        public const string WebServicesDiscoveryService = "org.apache.chemistry.dotcmis.binding.webservices.DiscoveryService";

+        public const string WebServicesRelationshipService = "org.apache.chemistry.dotcmis.binding.webservices.RelationshipService";

+        public const string WebServicesMultifilingService = "org.apache.chemistry.dotcmis.binding.webservices.MultiFilingService";

+        public const string WebServicesPolicyService = "org.apache.chemistry.dotcmis.binding.webservices.PolicyService";

+        public const string WebServicesAclService = "org.apache.chemistry.dotcmis.binding.webservices.ACLService";

+

+        // authentication provider

+        public const string AuthenticationProviderClass = "org.apache.chemistry.dotcmis.binding.auth.classname";

+

+        // binding caches

+        public const string CacheSizeRepositories = "org.apache.chemistry.dotcmis.binding.cache.repositories.size";

+        public const string CacheSizeTypes = "org.apache.chemistry.dotcmis.binding.cache.types.size";

+        public const string CacheSizeLinks = "org.apache.chemistry.dotcmis.binding.cache.links.size";

+

+        // message size

+        public const string MessageSize = "org.apache.chemistry.dotcmis.binding.message.size";

+    }

+

+    public static class BindingType

+    {

+        public const string AtomPub = "atompub";

+        public const string WebServices = "webservices";

+    }

+

+    public static class PropertyIds

+    {

+        // ---- base ----

+        public const string Name = "cmis:name";

+        public const string ObjectId = "cmis:objectId";

+        public const string ObjectTypeId = "cmis:objectTypeId";

+        public const string BaseTypeId = "cmis:baseTypeId";

+        public const string CreatedBy = "cmis:createdBy";

+        public const string CreationDate = "cmis:creationDate";

+        public const string LastModifiedBy = "cmis:lastModifiedBy";

+        public const string LastModificationDate = "cmis:lastModificationDate";

+        public const string ChangeToken = "cmis:changeToken";

+

+        // ---- document ----

+        public const string IsImmutable = "cmis:isImmutable";

+        public const string IsLatestVersion = "cmis:isLatestVersion";

+        public const string IsMajorVersion = "cmis:isMajorVersion";

+        public const string isLatestMajorVersion = "cmis:isLatestMajorVersion";

+        public const string VersionLabel = "cmis:versionLabel";

+        public const string VersionSeriesId = "cmis:versionSeriesId";

+        public const string IsVersionSeriesCheckedOut = "cmis:isVersionSeriesCheckedOut";

+        public const string VersionSeriesCheckedOutBy = "cmis:versionSeriesCheckedOutBy";

+        public const string VersionSeriesCheckedOutId = "cmis:versionSeriesCheckedOutId";

+        public const string CheckinComment = "cmis:checkinComment";

+        public const string ContentStreamLength = "cmis:contentStreamLength";

+        public const string ContentStreamMimeType = "cmis:contentStreamMimeType";

+        public const string ContentStreamFileName = "cmis:contentStreamFileName";

+        public const string ContentStreamId = "cmis:contentStreamId";

+

+        // ---- folder ----

+        public const string ParentId = "cmis:parentId";

+        public const string AllowedChildObjectTypeIds = "cmis:allowedChildObjectTypeIds";

+        public const string Path = "cmis:path";

+

+        // ---- relationship ----

+        public const string SourceId = "cmis:sourceId";

+        public const string TargetId = "cmis:targetId";

+

+        // ---- policy ----

+        public const string PolicyText = "cmis:policyText";

+    }

+

+    public static class BasicPermissions

+    {

+        public const string Read = "cmis:read";

+        public const string Write = "cmis:write";

+        public const string All = "cmis:all";

+    }

+

+    public static class PermissionMappingKeys

+    {

+        public const string CanGetDescendentsFolder = "canGetDescendents.Folder";

+        public const string CanGetChildrenFolder = "canGetChildren.Folder";

+        public const string CanGetParentsFolder = "canGetParents.Folder";

+        public const string CanGetFolderParentObject = "canGetFolderParent.Object";

+        public const string CanCreateDocumentFolder = "canCreateDocument.Folder";

+        public const string CanCreateFolderFolder = "canCreateFolder.Folder";

+        public const string CanCreateRelationshipSource = "canCreateRelationship.Source";

+        public const string CanCreateRelationshipTarget = "canCreateRelationship.Target";

+        public const string CanGetPropertiesObject = "canGetProperties.Object";

+        public const string CanViewContentObject = "canViewContent.Object";

+        public const string CanUpdatePropertiesObject = "canUpdateProperties.Object";

+        public const string CanMoveObject = "canMove.Object";

+        public const string CanMoveTarget = "canMove.Target";

+        public const string CanMoveSource = "canMove.Source";

+        public const string CanDeleteObject = "canDelete.Object";

+        public const string CanDeleteTreeFolder = "canDeleteTree.Folder";

+        public const string CanSetContentDocument = "canSetContent.Document";

+        public const string CanDeleteContentDocument = "canDeleteContent.Document";

+        public const string CanAddToFolderObject = "canAddToFolder.Object";

+        public const string CanAddToFolderFolder = "canAddToFolder.Folder";

+        public const string CanRemoveFromFolderObject = "canRemoveFromFolder.Object";

+        public const string CanRemoveFromFolderFolder = "canRemoveFromFolder.Folder";

+        public const string CanCheckoutDocument = "canCheckout.Document";

+        public const string CanCancelCheckoutDocument = "canCancelCheckout.Document";

+        public const string CanCheckinDocument = "canCheckin.Document";

+        public const string CanGetAllVersionsVersionSeries = "canGetAllVersions.VersionSeries";

+        public const string CanGetObjectRelationshipSObject = "canGetObjectRelationships.Object";

+        public const string CanAddPolicyObject = "canAddPolicy.Object";

+        public const string CanAddPolicyPolicy = "canAddPolicy.Policy";

+        public const string CanRemovePolicyObject = "canRemovePolicy.Object";

+        public const string CanRemovePolicyPolicy = "canRemovePolicy.Policy";

+        public const string CanGetAppliesPoliciesObject = "canGetAppliedPolicies.Object";

+        public const string CanGetAclObject = "canGetAcl.Object";

+        public const string CanApplyAclObject = "canApplyAcl.Object";

+    }

+

+    public static class Actions

+    {

+        public const string CanDeleteObject = "canDeleteObject";

+        public const string CanUpdateProperties = "canUpdateProperties";

+        public const string CanGetProperties = "canGetProperties";

+        public const string CanGetObjectRelationships = "canGetObjectRelationships";

+        public const string CanGetObjectParents = "canGetObjectParents";

+        public const string CanGetFolderParent = "canGetFolderParent";

+        public const string CanGetFolderTree = "canGetFolderTree";

+        public const string CanGetDescendants = "canGetDescendants";

+        public const string CanMoveObject = "canMoveObject";

+        public const string CanDeleteContentStream = "canDeleteContentStream";

+        public const string CanCheckOut = "canCheckOut";

+        public const string CanCancelCheckOut = "canCancelCheckOut";

+        public const string CanCheckIn = "canCheckIn";

+        public const string CanSetContentStream = "canSetContentStream";

+        public const string CanGetAllVersions = "canGetAllVersions";

+        public const string CanAddObjectToFolder = "canAddObjectToFolder";

+        public const string CanRemoveObjectFromFolder = "canRemoveObjectFromFolder";

+        public const string CanGetContentStream = "canGetContentStream";

+        public const string CanApplyPolicy = "canApplyPolicy";

+        public const string CanGetAppliedPolicies = "canGetAppliedPolicies";

+        public const string CanRemovePolicy = "canRemovePolicy";

+        public const string CanGetChildren = "canGetChildren";

+        public const string CanCreateDocument = "canCreateDocument";

+        public const string CanCreateFolder = "canCreateFolder";

+        public const string CanCreateRelationship = "canCreateRelationship";

+        public const string CanDeleteTree = "canDeleteTree";

+        public const string CanGetRenditions = "canGetRenditions";

+        public const string CanGetAcl = "canGetACL";

+        public const string CanApplyAcl = "canApplyACL";

+    }

+

+    internal static class AtomPubConstants

+    {

+        // namespaces

+        public const string NamespaceCMIS = "http://docs.oasis-open.org/ns/cmis/core/200908/";

+        public const string NamespaceAtom = "http://www.w3.org/2005/Atom";

+        public const string NamespaceAPP = "http://www.w3.org/2007/app";

+        public const string NamespaceRestAtom = "http://docs.oasis-open.org/ns/cmis/restatom/200908/";

+        public const string NamespaceXSI = "http://www.w3.org/2001/XMLSchema-instance";

+

+        // media types

+        public const string MediatypeService = "application/atomsvc+xml";

+        public const string MediatypeFeed = "application/atom+xml;type=feed";

+        public const string MediatypeEntry = "application/atom+xml;type=entry";

+        public const string MediatypeChildren = MediatypeFeed;

+        public const string MediatypeDescendants = "application/cmistree+xml";

+        public const string MediatypeQuery = "application/cmisquery+xml";

+        public const string MediatypeAllowableAction = "application/cmisallowableactions+xml";

+        public const string MediatypeACL = "application/cmisacl+xml";

+        public const string MediatypeCMISAtom = "application/cmisatom+xml";

+        public const string MediatypeOctetStream = "application/octet-stream";

+

+        // collections

+        public const string CollectionRoot = "root";

+        public const string CollectionTypes = "types";

+        public const string CollectionQuery = "query";

+        public const string CollectionCheckedout = "checkedout";

+        public const string CollectionUnfiled = "unfiled";

+

+        // URI templates

+        public const string TemplateObjectById = "objectbyid";

+        public const string TemplateObjectByPath = "objectbypath";

+        public const string TemplateTypeById = "typebyid";

+        public const string TemplateQuery = "query";

+

+        // Link rel

+        public const string RelSelf = "self";

+        public const string RelEnclosure = "enclosure";

+        public const string RelService = "service";

+        public const string RelDescribedBy = "describedby";

+        public const string RelAlternate = "alternate";

+        public const string RelDown = "down";

+        public const string RelUp = "up";

+        public const string RelFirst = "first";

+        public const string RelLast = "last";

+        public const string RelPrev = "previous";

+        public const string RelNext = "next";

+        public const string RelVia = "via";

+        public const string RelEdit = "edit";

+        public const string RelEditMedia = "edit-media";

+        public const string RelVersionHistory = "version-history";

+        public const string RelCurrentVersion = "current-version";

+        public const string RelWorkingCopy = "working-copy";

+        public const string RelFolderTree = "http://docs.oasis-open.org/ns/cmis/link/200908/foldertree";

+        public const string RelAllowableActions = "http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions";

+        public const string RelACL = "http://docs.oasis-open.org/ns/cmis/link/200908/acl";

+        public const string RelSource = "http://docs.oasis-open.org/ns/cmis/link/200908/source";

+        public const string RelTarget = "http://docs.oasis-open.org/ns/cmis/link/200908/target";

+        public const string RelRelationships = "http://docs.oasis-open.org/ns/cmis/link/200908/relationships";

+        public const string RelPolicies = "http://docs.oasis-open.org/ns/cmis/link/200908/policies";

+

+        public const string RepRelTypeDesc = "http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants";

+        public const string RepRelFolderTree = "http://docs.oasis-open.org/ns/cmis/link/200908/foldertree";

+        public const string RepRelRootDesc = "http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants";

+        public const string RepRelChanges = "http://docs.oasis-open.org/ns/cmis/link/200908/changes";

+

+        // parameter

+        public const string ParamACL = "includeACL";

+        public const string ParamAllowableActions = "includeAllowableActions";

+        public const string ParamAllVersions = "allVersions";

+        public const string ParamChangeLogToken = "changeLogToken";

+        public const string ParamChangeToken = "changeToken";

+        public const string ParamCheckinComment = "checkinComment";

+        public const string ParamCheckIn = "checkin";

+        public const string ParamChildTypes = "childTypes";

+        public const string ParamContinueOnFailure = "continueOnFailure";

+        public const string ParamDepth = "depth";

+        public const string ParamFilter = "filter";

+        public const string ParamFolderId = "folderId";

+        public const string ParamId = "id";

+        public const string ParamMajor = "major";

+        public const string ParamMaxItems = "maxItems";

+        public const string ParamObjectId = "objectId";

+        public const string ParamOnlyBasicPermissions = "onlyBasicPermissions";

+        public const string ParamOrderBy = "orderBy";

+        public const string ParamOverwriteFlag = "overwriteFlag";

+        public const string ParamPath = "path";

+        public const string ParamPathSegment = "includePathSegment";

+        public const string ParamPolicyId = "policyId";

+        public const string ParamPolicyIds = "includePolicyIds";

+        public const string ParamProperties = "includeProperties";

+        public const string ParamPropertyDefinitions = "includePropertyDefinitions";

+        public const string ParamRelationships = "includeRelationships";

+        public const string ParamRelationshipDirection = "relationshipDirection";

+        public const string ParamRelativePathSegment = "includeRelativePathSegment";

+        public const string ParamRemoveFrom = "removeFrom";

+        public const string ParamRenditionFilter = "renditionFilter";

+        public const string ParamRepositoryId = "repositoryId";

+        public const string ParamReturnVersion = "returnVersion";

+        public const string ParamSkipCount = "skipCount";

+        public const string ParamSourceFolderId = "sourceFolderId";

+        public const string ParamStreamId = "streamId";

+        public const string ParamSubRelationshipTypes = "includeSubRelationshipTypes";

+        public const string ParamTypeId = "typeId";

+        public const string ParamUnfildeObjects = "unfileObjects";

+        public const string ParamVersioningState = "versioningState";

+        public const string ParamQ = "q";

+        public const string ParamSearchAllVersions = "searchAllVersions";

+        public const string ParamACLPropagation = "ACLPropagation";

+

+        // rendition filter

+        public const string RenditionNone = "cmis:none";

+

+        // service doc

+        public const string TagService = "service";

+        public const string TagWorkspace = "workspace";

+        public const string TagRepositoryInfo = "repositoryInfo";

+        public const string TagCollection = "collection";

+        public const string TagCollectionType = "collectionType";

+        public const string TagUriTemplate = "uritemplate";

+        public const string TagTemplateTemplate = "template";

+        public const string TagTemplateType = "type";

+        public const string TagLink = "link";

+

+        // atom

+        public const string TagAtomId = "id";

+        public const string TagAtomTitle = "title";

+        public const string TagAtomUpdated = "updated";

+

+        // feed

+        public const string TagFeed = "feed";

+

+        // entry

+        public const string TagEntry = "entry";

+        public const string TagObject = "object";

+        public const string TagNumItems = "numItems";

+        public const string TagPathSegment = "pathSegment";

+        public const string TagRelativePathSegment = "relativePathSegment";

+        public const string TagType = "type";

+        public const string TagChildren = "children";

+        public const string TagContent = "content";

+        public const string TagContentMediatype = "mediatype";

+        public const string TagContentBase64 = "base64";

+

+        // allowable actions

+        public const string TagAllowableActions = "allowableActions";

+

+        // ACL

+        public const string TagACL = "acl";

+

+        // query

+        public const string TagQuery = "query";

+        public const string TagStatement = "statement";

+        public const string TagSearchAllVersions = "searchAllVersions";

+        public const string TagIncludeAllowableActions = "includeAllowableActions";

+        public const string TagRenditionFilter = "renditionFilter";

+        public const string TagIncludeRelationships = "includeRelationships";

+        public const string TagMaxItems = "maxItems";

+        public const string TagSkipCount = "skipCount";

+

+        // links

+        public const string LinkRel = "rel";

+        public const string LinkHref = "href";

+        public const string LinkType = "type";

+        public const string ContentSrc = "src";

+        public const string LinkRelContent = "@@content@@";

+    }

+}

diff --git a/DotCMIS/data/data-impl.cs b/DotCMIS/data/data-impl.cs
new file mode 100644
index 0000000..b929921
--- /dev/null
+++ b/DotCMIS/data/data-impl.cs
@@ -0,0 +1,539 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.IO;

+using System.Text;

+using DotCMIS.Data.Extensions;

+using DotCMIS.Enums;

+

+namespace DotCMIS.Data

+{

+    public class RepositoryInfo : ExtensionsData, IRepositoryInfo

+    {

+        public string Id { get; set; }

+        public string Name { get; set; }

+        public string Description { get; set; }

+        public string VendorName { get; set; }

+        public string ProductName { get; set; }

+        public string ProductVersion { get; set; }

+        public string RootFolderId { get; set; }

+        public IRepositoryCapabilities Capabilities { get; set; }

+        public IAclCapabilities AclCapabilities { get; set; }

+        public string LatestChangeLogToken { get; set; }

+        public string CmisVersionSupported { get; set; }

+        public string ThinClientUri { get; set; }

+        public bool? ChangesIncomplete { get; set; }

+        public IList<BaseTypeId?> ChangesOnType { get; set; }

+        public string PrincipalIdAnonymous { get; set; }

+        public string PrincipalIdAnyone { get; set; }

+    }

+

+    public class RepositoryCapabilities : ExtensionsData, IRepositoryCapabilities

+    {

+        public CapabilityContentStreamUpdates? ContentStreamUpdatesCapability { get; set; }

+        public CapabilityChanges? ChangesCapability { get; set; }

+        public CapabilityRenditions? RenditionsCapability { get; set; }

+        public bool? IsGetDescendantsSupported { get; set; }

+        public bool? IsGetFolderTreeSupported { get; set; }

+        public bool? IsMultifilingSupported { get; set; }

+        public bool? IsUnfilingSupported { get; set; }

+        public bool? IsVersionSpecificFilingSupported { get; set; }

+        public bool? IsPwcSearchableSupported { get; set; }

+        public bool? IsPwcUpdatableSupported { get; set; }

+        public bool? IsAllVersionsSearchableSupported { get; set; }

+        public CapabilityQuery? QueryCapability { get; set; }

+        public CapabilityJoin? JoinCapability { get; set; }

+        public CapabilityAcl? AclCapability { get; set; }

+    }

+

+    public class AclCapabilities : ExtensionsData, IAclCapabilities

+    {

+        public SupportedPermissions? SupportedPermissions { get; set; }

+        public AclPropagation? AclPropagation { get; set; }

+        public IList<IPermissionDefinition> Permissions { get; set; }

+        public IDictionary<string, IPermissionMapping> PermissionMapping { get; set; }

+    }

+

+    public class PermissionDefinition : ExtensionsData, IPermissionDefinition

+    {

+        public string Id { get; set; }

+        public string Description { get; set; }

+    }

+

+    public class PermissionMapping : ExtensionsData, IPermissionMapping

+    {

+        public string Key { get; set; }

+        public IList<string> Permissions { get; set; }

+    }

+

+    public abstract class TypeDefinition : ExtensionsData, ITypeDefinition

+    {

+        private List<IPropertyDefinition> propertyDefintionList = new List<IPropertyDefinition>();

+        private Dictionary<string, IPropertyDefinition> propertyDefintionDict = new Dictionary<string, IPropertyDefinition>();

+

+        public string Id { get; set; }

+        public string LocalName { get; set; }

+        public string LocalNamespace { get; set; }

+        public string DisplayName { get; set; }

+        public string QueryName { get; set; }

+        public string Description { get; set; }

+        public BaseTypeId? BaseTypeId { get; set; }

+        public string ParentTypeId { get; set; }

+        public bool? IsCreatable { get; set; }

+        public bool? IsFileable { get; set; }

+        public bool? IsQueryable { get; set; }

+        public bool? IsFulltextIndexed { get; set; }

+        public bool? IsIncludedInSupertypeQuery { get; set; }

+        public bool? IsControllablePolicy { get; set; }

+        public bool? IsControllableAcl { get; set; }

+        public IPropertyDefinition this[string propertyId]

+        {

+            get

+            {

+                IPropertyDefinition propertyDefinition = null;

+                propertyDefintionDict.TryGetValue(propertyId, out propertyDefinition);

+                return propertyDefinition;

+            }

+        }

+        public IList<IPropertyDefinition> PropertyDefintions

+        {

+            get

+            {

+                return propertyDefintionList;

+            }

+        }

+

+        public void AddPropertyDefinition(IPropertyDefinition propertyDefinition)

+        {

+            if (propertyDefinition == null || propertyDefinition.Id == null)

+            {

+                return;

+            }

+

+            propertyDefintionList.Add(propertyDefinition);

+            propertyDefintionDict[propertyDefinition.Id] = propertyDefinition;

+        }

+    }

+

+    public class DocumentTypeDefinition : TypeDefinition, IDocumentTypeDefinition

+    {

+        public bool? IsVersionable { get; set; }

+        public ContentStreamAllowed? ContentStreamAllowed { get; set; }

+    }

+

+    public class FolderTypeDefinition : TypeDefinition, IFolderTypeDefinition

+    {

+    }

+

+    public class PolicyTypeDefinition : TypeDefinition, IPolicyTypeDefinition

+    {

+    }

+

+    public class RelationshipTypeDefinition : TypeDefinition, IRelationshipTypeDefinition

+    {

+        public IList<string> AllowedSourceTypeIds { get; set; }

+        public IList<string> AllowedTargetTypeIds { get; set; }

+    }

+

+    public class TypeDefinitionList : ExtensionsData, ITypeDefinitionList

+    {

+        public IList<ITypeDefinition> List { get; set; }

+        public bool? HasMoreItems { get; set; }

+        public long? NumItems { get; set; }

+    }

+

+    public class TypeDefinitionContainer : ExtensionsData, ITypeDefinitionContainer

+    {

+        public ITypeDefinition TypeDefinition { get; set; }

+        public IList<ITypeDefinitionContainer> Children { get; set; }

+    }

+

+    public abstract class PropertyDefinition : ExtensionsData, IPropertyDefinition

+    {

+        public string Id { get; set; }

+        public string LocalName { get; set; }

+        public string LocalNamespace { get; set; }

+        public string DisplayName { get; set; }

+        public string QueryName { get; set; }

+        public string Description { get; set; }

+        public PropertyType? PropertyType { get; set; }

+        public Cardinality? Cardinality { get; set; }

+        public Updatability? Updatability { get; set; }

+        public bool? IsInherited { get; set; }

+        public bool? IsRequired { get; set; }

+        public bool? IsQueryable { get; set; }

+        public bool? IsOrderable { get; set; }

+        public bool? IsOpenChoice { get; set; }

+    }

+

+    public class Choice<T> : IChoice<T>

+    {

+        public string DisplayName { get; set; }

+        public IList<T> Value { get; set; }

+        public IList<IChoice<T>> Choices { get; set; }

+    }

+

+    public class PropertyBooleanDefinition : PropertyDefinition, IPropertyBooleanDefinition

+    {

+        public IList<bool> DefaultValue { get; set; }

+        public IList<IChoice<bool>> Choices { get; set; }

+    }

+

+    public class PropertyDateTimeDefinition : PropertyDefinition, IPropertyDateTimeDefinition

+    {

+        public IList<DateTime> DefaultValue { get; set; }

+        public IList<IChoice<DateTime>> Choices { get; set; }

+        public DateTimeResolution? DateTimeResolution { get; set; }

+    }

+

+    public class PropertyDecimalDefinition : PropertyDefinition, IPropertyDecimalDefinition

+    {

+        public IList<decimal> DefaultValue { get; set; }

+        public IList<IChoice<decimal>> Choices { get; set; }

+        public decimal? MinValue { get; set; }

+        public decimal? MaxValue { get; set; }

+        public DecimalPrecision? Precision { get; set; }

+    }

+

+    public class PropertyHtmlDefinition : PropertyDefinition, IPropertyHtmlDefinition

+    {

+        public IList<string> DefaultValue { get; set; }

+        public IList<IChoice<string>> Choices { get; set; }

+    }

+

+    public class PropertyIdDefinition : PropertyDefinition, IPropertyIdDefinition

+    {

+        public IList<string> DefaultValue { get; set; }

+        public IList<IChoice<string>> Choices { get; set; }

+    }

+

+    public class PropertyIntegerDefinition : PropertyDefinition, IPropertyIntegerDefinition

+    {

+        public IList<long> DefaultValue { get; set; }

+        public IList<IChoice<long>> Choices { get; set; }

+        public long? MinValue { get; set; }

+        public long? MaxValue { get; set; }

+    }

+

+    public class PropertyStringDefinition : PropertyDefinition, IPropertyStringDefinition

+    {

+        public IList<string> DefaultValue { get; set; }

+        public IList<IChoice<string>> Choices { get; set; }

+        public long? MaxLength { get; set; }

+    }

+

+    public class PropertyUriDefinition : PropertyDefinition, IPropertyUriDefinition

+    {

+        public IList<string> DefaultValue { get; set; }

+        public IList<IChoice<string>> Choices { get; set; }

+    }

+

+    public class ObjectData : ExtensionsData, IObjectData

+    {

+        public string Id

+        {

+            get

+            {

+                return GetFirstValue(PropertyIds.ObjectId) as string;

+            }

+        }

+        public BaseTypeId? BaseTypeId

+        {

+            get

+            {

+                string baseTypeId = GetFirstValue(PropertyIds.BaseTypeId) as string;

+                if (baseTypeId == null)

+                {

+                    return null;

+                }

+

+                return baseTypeId.GetCmisEnum<BaseTypeId>();

+            }

+        }

+        public IProperties Properties { get; set; }

+        public IAllowableActions AllowableActions { get; set; }

+        public IList<IObjectData> Relationships { get; set; }

+        public IChangeEventInfo ChangeEventInfo { get; set; }

+        public IAcl Acl { get; set; }

+        public bool? IsExactAcl { get; set; }

+        public IPolicyIdList PolicyIds { get; set; }

+        public IList<IRenditionData> Renditions { get; set; }

+

+        private object GetFirstValue(string id)

+        {

+            if (Properties == null) { return null; }

+

+            IPropertyData property = Properties[id];

+            if (property == null)

+            {

+                return null;

+            }

+

+            return property.FirstObject;

+        }

+    }

+

+    public class ObjectList : ExtensionsData, IObjectList

+    {

+        public IList<IObjectData> Objects { get; set; }

+        public bool? HasMoreItems { get; set; }

+        public long? NumItems { get; set; }

+    }

+

+    public class ObjectInFolderData : ExtensionsData, IObjectInFolderData

+    {

+        public IObjectData Object { get; set; }

+        public string PathSegment { get; set; }

+    }

+

+    public class ObjectInFolderList : ExtensionsData, IObjectInFolderList

+    {

+        public IList<IObjectInFolderData> Objects { get; set; }

+        public bool? HasMoreItems { get; set; }

+        public long? NumItems { get; set; }

+    }

+

+    public class ObjectInFolderContainer : ExtensionsData, IObjectInFolderContainer

+    {

+        public IObjectInFolderData Object { get; set; }

+        public IList<IObjectInFolderContainer> Children { get; set; }

+    }

+

+    public class ObjectParentData : ExtensionsData, IObjectParentData

+    {

+        public IObjectData Object { get; set; }

+        public string RelativePathSegment { get; set; }

+    }

+

+    public class Properties : ExtensionsData, IProperties

+    {

+        private List<IPropertyData> propertyList = new List<IPropertyData>();

+        private Dictionary<string, IPropertyData> propertyDict = new Dictionary<string, IPropertyData>();

+

+        public IPropertyData this[string propertyId]

+        {

+            get

+            {

+                IPropertyData property = null;

+                propertyDict.TryGetValue(propertyId, out property);

+                return property;

+            }

+        }

+

+        public IList<IPropertyData> PropertyList

+        {

+            get

+            {

+                return propertyList;

+            }

+        }

+

+        public void AddProperty(IPropertyData property)

+        {

+            if (property == null)

+            {

+                return;

+            }

+

+            propertyList.Add(property);

+

+            if (property.Id != null)

+            {

+                propertyDict[property.Id] = property;

+            }

+        }

+

+        public override string ToString()

+        {

+            StringBuilder sb = new StringBuilder();

+            foreach (IPropertyData prop in propertyList)

+            {

+                if (sb.Length == 0) { sb.Append("["); }

+                else { sb.Append(", "); }

+                sb.Append(prop.ToString());

+            }

+            sb.Append("]");

+

+            return sb.ToString();

+        }

+    }

+

+    public abstract class PropertyData : ExtensionsData, IPropertyData

+    {

+        public string Id { get; set; }

+        public string LocalName { get; set; }

+        public string DisplayName { get; set; }

+        public string QueryName { get; set; }

+

+        public object FirstObject

+        {

+            get

+            {

+                if (this is PropertyBoolean)

+                {

+                    return ((PropertyBoolean)this).FirstValue;

+                }

+                else if (this is PropertyDateTime)

+                {

+                    return ((PropertyDateTime)this).FirstValue;

+                }

+                else if (this is PropertyDecimal)

+                {

+                    return ((PropertyDecimal)this).FirstValue;

+                }

+                else if (this is PropertyHtml)

+                {

+                    return ((PropertyHtml)this).FirstValue;

+                }

+                else if (this is PropertyId)

+                {

+                    return ((PropertyId)this).FirstValue;

+                }

+                else if (this is PropertyInteger)

+                {

+                    return ((PropertyInteger)this).FirstValue;

+                }

+                else if (this is PropertyString)

+                {

+                    return ((PropertyString)this).FirstValue;

+                }

+                else if (this is PropertyUri)

+                {

+                    return ((PropertyUri)this).FirstValue;

+                }

+

+                return null;

+            }

+        }

+

+        public override string ToString()

+        {

+            return Id + ": " + FirstObject;

+        }

+    }

+

+    public class PropertyBoolean : PropertyData, IPropertyBoolean

+    {

+        public IList<bool> Values { get; set; }

+        public bool? FirstValue { get { return Values == null || Values.Count < 1 ? null : (bool?)Values[0]; } }

+    }

+

+    public class PropertyDateTime : PropertyData, IPropertyDateTime

+    {

+        public IList<DateTime> Values { get; set; }

+        public DateTime? FirstValue { get { return Values == null || Values.Count < 1 ? null : (DateTime?)Values[0]; } }

+    }

+

+    public class PropertyDecimal : PropertyData, IPropertyDecimal

+    {

+        public IList<decimal> Values { get; set; }

+        public decimal? FirstValue { get { return Values == null || Values.Count < 1 ? null : (decimal?)Values[0]; } }

+    }

+

+    public class PropertyHtml : PropertyData, IPropertyHtml

+    {

+        public IList<string> Values { get; set; }

+        public string FirstValue { get { return Values == null || Values.Count < 1 ? null : Values[0]; } }

+    }

+

+    public class PropertyId : PropertyData, IPropertyId

+    {

+        public IList<string> Values { get; set; }

+        public string FirstValue { get { return Values == null || Values.Count < 1 ? null : Values[0]; } }

+    }

+

+    public class PropertyInteger : PropertyData, IPropertyInteger

+    {

+        public IList<long> Values { get; set; }

+        public long? FirstValue { get { return Values == null || Values.Count < 1 ? null : (long?)Values[0]; } }

+    }

+

+    public class PropertyString : PropertyData, IPropertyString

+    {

+        public IList<string> Values { get; set; }

+        public string FirstValue { get { return Values == null || Values.Count < 1 ? null : Values[0]; } }

+    }

+

+    public class PropertyUri : PropertyData, IPropertyUri

+    {

+        public IList<string> Values { get; set; }

+        public string FirstValue { get { return Values == null || Values.Count < 1 ? null : Values[0]; } }

+    }

+

+    public class Principal : ExtensionsData, IPrincipal

+    {

+        public string Id { get; set; }

+    }

+

+    public class Ace : ExtensionsData, IAce

+    {

+        public IPrincipal Principal { get; set; }

+        public string PrincipalId { get { return Principal == null ? null : Principal.Id; } }

+        public IList<string> Permissions { get; set; }

+        public bool IsDirect { get; set; }

+    }

+

+    public class Acl : ExtensionsData, IAcl

+    {

+        public IList<IAce> Aces { get; set; }

+        public bool? IsExact { get; set; }

+    }

+

+    public class ContentStream : ExtensionsData, IContentStream

+    {

+        public long? Length { get; set; }

+        public string MimeType { get; set; }

+        public string FileName { get; set; }

+        public Stream Stream { get; set; }

+    }

+

+    public class AllowableActions : ExtensionsData, IAllowableActions

+    {

+        public HashSet<string> Actions { get; set; }

+    }

+

+    public class RenditionData : ExtensionsData, IRenditionData

+    {

+        public string StreamId { get; set; }

+        public string MimeType { get; set; }

+        public long? Length { get; set; }

+        public string Kind { get; set; }

+        public string Title { get; set; }

+        public long? Height { get; set; }

+        public long? Width { get; set; }

+        public string RenditionDocumentId { get; set; }

+    }

+

+    public class ChangeEventInfo : ExtensionsData, IChangeEventInfo

+    {

+        public ChangeType ChangeType { get; set; }

+        public DateTime ChangeTime { get; set; }

+    }

+

+    public class PolicyIdList : ExtensionsData, IPolicyIdList

+    {

+        public IList<string> PolicyIds { get; set; }

+    }

+

+    public class FailedToDeleteData : ExtensionsData, IFailedToDeleteData

+    {

+        public IList<string> Ids { get; set; }

+    }

+}

diff --git a/DotCMIS/data/data-intf.cs b/DotCMIS/data/data-intf.cs
new file mode 100644
index 0000000..fbbd8cd
--- /dev/null
+++ b/DotCMIS/data/data-intf.cs
@@ -0,0 +1,388 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System.Collections.Generic;

+using DotCMIS.Data.Extensions;

+using DotCMIS.Enums;

+using System.IO;

+using System;

+using System.Collections;

+

+namespace DotCMIS.Data

+{

+    public interface IRepositoryInfo : IExtensionsData

+    {

+        string Id { get; }

+        string Name { get; }

+        string Description { get; }

+        string VendorName { get; }

+        string ProductName { get; }

+        string ProductVersion { get; }

+        string RootFolderId { get; }

+        IRepositoryCapabilities Capabilities { get; }

+        IAclCapabilities AclCapabilities { get; }

+        string LatestChangeLogToken { get; }

+        string CmisVersionSupported { get; }

+        string ThinClientUri { get; }

+        bool? ChangesIncomplete { get; }

+        IList<BaseTypeId?> ChangesOnType { get; }

+        string PrincipalIdAnonymous { get; }

+        string PrincipalIdAnyone { get; }

+    }

+

+    public interface IRepositoryCapabilities : IExtensionsData

+    {

+        CapabilityContentStreamUpdates? ContentStreamUpdatesCapability { get; }

+        CapabilityChanges? ChangesCapability { get; }

+        CapabilityRenditions? RenditionsCapability { get; }

+        bool? IsGetDescendantsSupported { get; }

+        bool? IsGetFolderTreeSupported { get; }

+        bool? IsMultifilingSupported { get; }

+        bool? IsUnfilingSupported { get; }

+        bool? IsVersionSpecificFilingSupported { get; }

+        bool? IsPwcSearchableSupported { get; }

+        bool? IsPwcUpdatableSupported { get; }

+        bool? IsAllVersionsSearchableSupported { get; }

+        CapabilityQuery? QueryCapability { get; }

+        CapabilityJoin? JoinCapability { get; }

+        CapabilityAcl? AclCapability { get; }

+    }

+

+    public interface IAclCapabilities : IExtensionsData

+    {

+        SupportedPermissions? SupportedPermissions { get; }

+        AclPropagation? AclPropagation { get; }

+        IList<IPermissionDefinition> Permissions { get; }

+        IDictionary<string, IPermissionMapping> PermissionMapping { get; }

+    }

+

+    public interface IPermissionDefinition : IExtensionsData

+    {

+        string Id { get; }

+        string Description { get; }

+    }

+

+    public interface IPermissionMapping : IExtensionsData

+    {

+        string Key { get; }

+        IList<string> Permissions { get; }

+    }

+

+    public interface ITypeDefinition : IExtensionsData

+    {

+        string Id { get; }

+        string LocalName { get; }

+        string LocalNamespace { get; }

+        string DisplayName { get; }

+        string QueryName { get; }

+        string Description { get; }

+        BaseTypeId? BaseTypeId { get; }

+        string ParentTypeId { get; }

+        bool? IsCreatable { get; }

+        bool? IsFileable { get; }

+        bool? IsQueryable { get; }

+        bool? IsFulltextIndexed { get; }

+        bool? IsIncludedInSupertypeQuery { get; }

+        bool? IsControllablePolicy { get; }

+        bool? IsControllableAcl { get; }

+        IPropertyDefinition this[string propertyId] { get; }

+        IList<IPropertyDefinition> PropertyDefintions { get; }

+    }

+

+    public interface IDocumentTypeDefinition : ITypeDefinition

+    {

+        bool? IsVersionable { get; }

+        ContentStreamAllowed? ContentStreamAllowed { get; }

+    }

+

+    public interface IFolderTypeDefinition : ITypeDefinition

+    {

+    }

+

+    public interface IPolicyTypeDefinition : ITypeDefinition

+    {

+    }

+

+    public interface IRelationshipTypeDefinition : ITypeDefinition

+    {

+        IList<string> AllowedSourceTypeIds { get; }

+        IList<string> AllowedTargetTypeIds { get; }

+    }

+

+    public interface ITypeDefinitionList : IExtensionsData

+    {

+        IList<ITypeDefinition> List { get; }

+        bool? HasMoreItems { get; }

+        long? NumItems { get; }

+    }

+

+    public interface ITypeDefinitionContainer : IExtensionsData

+    {

+        ITypeDefinition TypeDefinition { get; }

+        IList<ITypeDefinitionContainer> Children { get; }

+    }

+

+    public interface IPropertyDefinition : IExtensionsData

+    {

+        string Id { get; }

+        string LocalName { get; }

+        string LocalNamespace { get; }

+        string DisplayName { get; }

+        string QueryName { get; }

+        string Description { get; }

+        PropertyType? PropertyType { get; }

+        Cardinality? Cardinality { get; }

+        Updatability? Updatability { get; }

+        bool? IsInherited { get; }

+        bool? IsRequired { get; }

+        bool? IsQueryable { get; }

+        bool? IsOrderable { get; }

+        bool? IsOpenChoice { get; }

+    }

+

+    public interface IChoice<T>

+    {

+        string DisplayName { get; }

+        IList<T> Value { get; }

+        IList<IChoice<T>> Choices { get; }

+    }

+

+    public interface IPropertyBooleanDefinition : IPropertyDefinition

+    {

+        IList<bool> DefaultValue { get; }

+        IList<IChoice<bool>> Choices { get; }

+    }

+

+    public interface IPropertyDateTimeDefinition : IPropertyDefinition

+    {

+        IList<DateTime> DefaultValue { get; }

+        IList<IChoice<DateTime>> Choices { get; }

+        DateTimeResolution? DateTimeResolution { get; }

+    }

+

+    public interface IPropertyDecimalDefinition : IPropertyDefinition

+    {

+        IList<decimal> DefaultValue { get; }

+        IList<IChoice<decimal>> Choices { get; }

+        decimal? MinValue { get; }

+        decimal? MaxValue { get; }

+        DecimalPrecision? Precision { get; }

+    }

+

+    public interface IPropertyHtmlDefinition : IPropertyDefinition

+    {

+        IList<string> DefaultValue { get; }

+        IList<IChoice<string>> Choices { get; }

+    }

+

+    public interface IPropertyIdDefinition : IPropertyDefinition

+    {

+        IList<string> DefaultValue { get; }

+        IList<IChoice<string>> Choices { get; }

+    }

+

+    public interface IPropertyIntegerDefinition : IPropertyDefinition

+    {

+        IList<long> DefaultValue { get; }

+        IList<IChoice<long>> Choices { get; }

+        long? MinValue { get; }

+        long? MaxValue { get; }

+    }

+

+    public interface IPropertyStringDefinition : IPropertyDefinition

+    {

+        IList<string> DefaultValue { get; }

+        IList<IChoice<string>> Choices { get; }

+        long? MaxLength { get; }

+    }

+

+    public interface IPropertyUriDefinition : IPropertyDefinition

+    {

+        IList<string> DefaultValue { get; }

+        IList<IChoice<string>> Choices { get; }

+    }

+

+    public interface IObjectData : IExtensionsData

+    {

+        string Id { get; }

+        BaseTypeId? BaseTypeId { get; }

+        IProperties Properties { get; }

+        IAllowableActions AllowableActions { get; }

+        IList<IObjectData> Relationships { get; }

+        IChangeEventInfo ChangeEventInfo { get; }

+        IAcl Acl { get; }

+        bool? IsExactAcl { get; }

+        IPolicyIdList PolicyIds { get; }

+        IList<IRenditionData> Renditions { get; }

+    }

+

+    public interface IObjectList : IExtensionsData

+    {

+        IList<IObjectData> Objects { get; }

+        bool? HasMoreItems { get; }

+        long? NumItems { get; }

+    }

+

+    public interface IObjectInFolderData : IExtensionsData

+    {

+        IObjectData Object { get; }

+        string PathSegment { get; }

+    }

+

+    public interface IObjectInFolderList : IExtensionsData

+    {

+        IList<IObjectInFolderData> Objects { get; }

+        bool? HasMoreItems { get; }

+        long? NumItems { get; }

+    }

+

+    public interface IObjectInFolderContainer : IExtensionsData

+    {

+        IObjectInFolderData Object { get; }

+        IList<IObjectInFolderContainer> Children { get; }

+    }

+

+    public interface IObjectParentData : IExtensionsData

+    {

+        IObjectData Object { get; }

+        string RelativePathSegment { get; }

+    }

+

+    public interface IProperties : IExtensionsData

+    {

+        IPropertyData this[string propertyId] { get; }

+        IList<IPropertyData> PropertyList { get; }

+    }

+

+    public interface IPropertyData : IExtensionsData

+    {

+        string Id { get; }

+        string LocalName { get; }

+        string DisplayName { get; }

+        string QueryName { get; }

+        object FirstObject { get; }

+    }

+

+    public interface IPropertyBoolean : IPropertyData

+    {

+        IList<bool> Values { get; }

+        bool? FirstValue { get; }

+    }

+

+    public interface IPropertyDateTime : IPropertyData

+    {

+        IList<DateTime> Values { get; }

+        DateTime? FirstValue { get; }

+    }

+

+    public interface IPropertyDecimal : IPropertyData

+    {

+        IList<decimal> Values { get; }

+        decimal? FirstValue { get; }

+    }

+

+    public interface IPropertyHtml : IPropertyData

+    {

+        IList<string> Values { get; }

+        string FirstValue { get; }

+    }

+

+    public interface IPropertyId : IPropertyData

+    {

+        IList<string> Values { get; }

+        string FirstValue { get; }

+    }

+

+    public interface IPropertyInteger : IPropertyData

+    {

+        IList<long> Values { get; }

+        long? FirstValue { get; }

+    }

+

+    public interface IPropertyString : IPropertyData

+    {

+        IList<string> Values { get; }

+        string FirstValue { get; }

+    }

+

+    public interface IPropertyUri : IPropertyData

+    {

+        IList<string> Values { get; }

+        string FirstValue { get; }

+    }

+

+    public interface IPrincipal : IExtensionsData

+    {

+        string Id { get; }

+    }

+

+    public interface IAce : IExtensionsData

+    {

+        IPrincipal Principal { get; }

+        string PrincipalId { get; }

+        IList<string> Permissions { get; }

+        bool IsDirect { get; }

+    }

+

+    public interface IAcl : IExtensionsData

+    {

+        IList<IAce> Aces { get; }

+        bool? IsExact { get; }

+    }

+

+    public interface IContentStream : IExtensionsData

+    {

+        long? Length { get; }

+        string MimeType { get; }

+        string FileName { get; }

+        Stream Stream { get; }

+    }

+

+    public interface IAllowableActions : IExtensionsData

+    {

+        HashSet<string> Actions { get; }

+    }

+

+    public interface IRenditionData : IExtensionsData

+    {

+        string StreamId { get; }

+        string MimeType { get; }

+        long? Length { get; }

+        string Kind { get; }

+        string Title { get; }

+        long? Height { get; }

+        long? Width { get; }

+        string RenditionDocumentId { get; }

+    }

+

+    public interface IChangeEventInfo : IExtensionsData

+    {

+        ChangeType ChangeType { get; }

+        DateTime ChangeTime { get; }

+    }

+

+    public interface IPolicyIdList : IExtensionsData

+    {

+        IList<string> PolicyIds { get; }

+    }

+

+    public interface IFailedToDeleteData : IExtensionsData

+    {

+        IList<string> Ids { get; }

+    }

+}

diff --git a/DotCMIS/data/extensions.cs b/DotCMIS/data/extensions.cs
new file mode 100644
index 0000000..81ecc1a
--- /dev/null
+++ b/DotCMIS/data/extensions.cs
@@ -0,0 +1,61 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+

+namespace DotCMIS.Data.Extensions

+{

+    public interface ICmisExtensionElement

+    {

+        string Name { get; }

+

+        string Namespace { get; }

+

+        string Value { get; }

+

+        IDictionary<string, string> Attributes { get; }

+

+        IList<ICmisExtensionElement> Children { get; }

+    }

+

+    public class CmisExtensionElement :ICmisExtensionElement

+    {

+        public string Name { get; set; }

+

+        public string Namespace { get; set; }

+

+        public string Value { get; set; }

+

+        public IDictionary<string, string> Attributes { get; set; }

+

+        public IList<ICmisExtensionElement> Children { get; set;}

+    }

+

+    public interface IExtensionsData

+    {

+        IList<ICmisExtensionElement> Extensions { get; set; }

+    }

+

+    public class ExtensionsData : IExtensionsData

+    {

+        public IList<ICmisExtensionElement> Extensions { get; set; }

+    }

+}

diff --git a/DotCMIS/enums.cs b/DotCMIS/enums.cs
new file mode 100644
index 0000000..02b5ee3
--- /dev/null
+++ b/DotCMIS/enums.cs
@@ -0,0 +1,454 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+using System.Reflection;

+using DotCMIS.CMISWebServicesReference;

+using System.Xml.Serialization;

+

+namespace DotCMIS.Enums

+{

+    public enum BaseTypeId

+    {

+        [CmisValue("cmis:document")]

+        CmisDocument,

+

+        [CmisValue("cmis:folder")]

+        CmisFolder,

+

+        [CmisValue("cmis:relationship")]

+        CmisRelationship,

+

+        [CmisValue("cmis:policy")]

+        CmisPolicy

+    }

+

+    public enum CapabilityContentStreamUpdates

+    {

+        [CmisValue("anytime")]

+        Anyime,

+

+        [CmisValue("pwconly")]

+        PWCOnly,

+

+        [CmisValue("none")]

+        None

+    }

+

+    public enum CapabilityChanges

+    {

+        [CmisValue("none")]

+        None,

+

+        [CmisValue("objectidsonly")]

+        ObjectIdsOnly,

+

+        [CmisValue("properties")]

+        Properties,

+

+        [CmisValue("all")]

+        All

+    }

+

+    public enum CapabilityRenditions

+    {

+        [CmisValue("none")]

+        None,

+

+        [CmisValue("read")]

+        Read

+    }

+

+    public enum CapabilityQuery

+    {

+        [CmisValue("none")]

+        None,

+

+        [CmisValue("metadataonly")]

+        MetadataOnly,

+

+        [CmisValue("fulltextonly")]

+        FulltextOnly,

+

+        [CmisValue("bothseparate")]

+        BothSeparate,

+

+        [CmisValue("bothcombined")]

+        BothCombined

+    }

+

+    public enum CapabilityJoin

+    {

+        [CmisValue("none")]

+        None,

+

+        [CmisValue("inneronly")]

+        InnerOnly,

+

+        [CmisValue("innerandouter")]

+        InnerAndOuter

+    }

+

+    public enum CapabilityAcl

+    {

+        [CmisValue("none")]

+        None,

+

+        [CmisValue("discover")]

+        Discover,

+

+        [CmisValue("manage")]

+        Manage

+    }

+

+    public enum SupportedPermissions

+    {

+        [CmisValue("basic")]

+        Basic,

+

+        [CmisValue("repository")]

+        Repository,

+

+        [CmisValue("both")]

+        Both

+    }

+

+    public enum AclPropagation

+    {

+        [CmisValue("repositorydetermined")]

+        RepositoryDetermined,

+

+        [CmisValue("objectonly")]

+        ObjectOnly,

+

+        [CmisValue("propagate")]

+        Propagate

+    }

+

+    public enum ContentStreamAllowed

+    {

+        [CmisValue("notallowed")]

+        NotAllowed,

+

+        [CmisValue("allowed")]

+        Allowed,

+

+        [CmisValue("required")]

+        Required

+    }

+

+    public enum PropertyType

+    {

+        [CmisValue("boolean")]

+        Boolean,

+

+        [CmisValue("id")]

+        Id,

+

+        [CmisValue("integer")]

+        Integer,

+

+        [CmisValue("datetime")]

+        DateTime,

+

+        [CmisValue("decimal")]

+        Decimal,

+

+        [CmisValue("html")]

+        Html,

+

+        [CmisValue("string")]

+        String,

+

+        [CmisValue("uri")]

+        Uri

+    }

+

+    public enum Cardinality

+    {

+        [CmisValue("single")]

+        Single,

+

+        [CmisValue("multi")]

+        Multi

+    }

+

+    public enum Updatability

+    {

+        [CmisValue("readonly")]

+        ReadOnly,

+

+        [CmisValue("readwrite")]

+        ReadWrite,

+

+        [CmisValue("whencheckedout")]

+        WhenCheckedOut,

+

+        [CmisValue("oncreate")]

+        OnCreate

+    }

+

+    public enum DateTimeResolution

+    {

+        [CmisValue("year")]

+        Year,

+

+        [CmisValue("date")]

+        Date,

+

+        [CmisValue("time")]

+        Time

+    }

+

+    public enum DecimalPrecision

+    {

+        [CmisValue("32")]

+        Bits32,

+

+        [CmisValue("64")]

+        Bits64

+    }

+

+    public enum IncludeRelationships

+    {

+        [CmisValue("none")]

+        None,

+

+        [CmisValue("source")]

+        Source,

+

+        [CmisValue("target")]

+        Target,

+

+        [CmisValue("both")]

+        Both

+    }

+

+    public enum VersioningState

+    {

+        [CmisValue("none")]

+        None,

+

+        [CmisValue("major")]

+        Major,

+

+        [CmisValue("minor")]

+        Minor,

+

+        [CmisValue("checkedout")]

+        CheckedOut

+    }

+

+    public enum UnfileObject

+    {

+        [CmisValue("unfile")]

+        Unfile,

+

+        [CmisValue("deletesinglefiled")]

+        DeleteSinglefiled,

+

+        [CmisValue("delete")]

+        Delete

+    }

+

+    public enum RelationshipDirection

+    {

+        [CmisValue("source")]

+        Source,

+

+        [CmisValue("target")]

+        Target,

+

+        [CmisValue("either")]

+        Either

+    }

+

+    public enum ReturnVersion

+    {

+        [CmisValue("this")]

+        This,

+

+        [CmisValue("latest")]

+        Latest,

+

+        [CmisValue("latestmajor")]

+        LatestMajor

+    }

+

+    public enum ChangeType

+    {

+        [CmisValue("created")]

+        Created,

+

+        [CmisValue("updated")]

+        Updated,

+

+        [CmisValue("deleted")]

+        Deleted,

+

+        [CmisValue("security")]

+        Security

+    }

+

+    // --- attribute class ---

+

+    public class CmisValueAttribute : System.Attribute

+    {

+        public CmisValueAttribute(string value)

+        {

+            Value = value;

+        }

+

+        public string Value

+        {

+            get;

+            private set;

+        }

+    }

+

+    public static class CmisValue

+    {

+        private static IDictionary<Type, IDictionary<Enum, Enum>> CmisToSerializerDict = new Dictionary<Type, IDictionary<Enum, Enum>>();

+        private static IDictionary<Type, IDictionary<Enum, Enum>> SerializerToCmisDict = new Dictionary<Type, IDictionary<Enum, Enum>>();

+

+        static CmisValue()

+        {

+            MapEnums(typeof(BaseTypeId), typeof(enumBaseObjectTypeIds));

+            MapEnums(typeof(CapabilityContentStreamUpdates), typeof(enumCapabilityContentStreamUpdates));

+            MapEnums(typeof(CapabilityChanges), typeof(enumCapabilityChanges));

+            MapEnums(typeof(CapabilityRenditions), typeof(enumCapabilityRendition));

+            MapEnums(typeof(CapabilityQuery), typeof(enumCapabilityQuery));

+            MapEnums(typeof(CapabilityJoin), typeof(enumCapabilityJoin));

+            MapEnums(typeof(CapabilityAcl), typeof(enumCapabilityACL));

+            MapEnums(typeof(SupportedPermissions), typeof(enumSupportedPermissions));

+            MapEnums(typeof(AclPropagation), typeof(enumACLPropagation));

+            MapEnums(typeof(ContentStreamAllowed), typeof(enumContentStreamAllowed));

+            MapEnums(typeof(PropertyType), typeof(enumPropertyType));

+            MapEnums(typeof(Cardinality), typeof(enumCardinality));

+            MapEnums(typeof(Updatability), typeof(enumUpdatability));

+            MapEnums(typeof(DateTimeResolution), typeof(enumDateTimeResolution));

+            MapEnums(typeof(DecimalPrecision), typeof(enumDecimalPrecision));

+            MapEnums(typeof(IncludeRelationships), typeof(enumIncludeRelationships));

+            MapEnums(typeof(ChangeType), typeof(enumTypeOfChanges));

+        }

+

+        private static void MapEnums(Type cmisEnum, Type xsdEnum)

+        {

+            IDictionary<Enum, Enum> cmisDict = new Dictionary<Enum, Enum>();

+            CmisToSerializerDict[cmisEnum] = cmisDict;

+

+            IDictionary<Enum, Enum> xsdDict = new Dictionary<Enum, Enum>();

+            SerializerToCmisDict[xsdEnum] = xsdDict;

+

+            foreach (FieldInfo xsdfieldInfo in xsdEnum.GetFields())

+            {

+                Enum xsdEnumValue = null;

+

+                try

+                {

+                    xsdEnumValue = (Enum)Enum.Parse(xsdEnum, xsdfieldInfo.Name);

+                }

+                catch (Exception)

+                {

+                    continue;

+                }

+

+                XmlEnumAttribute[] xmlAttr = xsdfieldInfo.GetCustomAttributes(typeof(XmlEnumAttribute), false) as XmlEnumAttribute[];

+                string value = xmlAttr.Length == 0 ? value = xsdfieldInfo.Name : value = xmlAttr[0].Name;

+

+                foreach (FieldInfo cmisfieldInfo in cmisEnum.GetFields())

+                {

+                    CmisValueAttribute[] cmisValueAttr = cmisfieldInfo.GetCustomAttributes(typeof(CmisValueAttribute), false) as CmisValueAttribute[];

+                    if (cmisValueAttr != null && cmisValueAttr.Length > 0 && cmisValueAttr[0].Value == value)

+                    {

+                        Enum cmisEnumValue = (Enum)Enum.Parse(cmisEnum, cmisfieldInfo.Name);

+                        cmisDict[cmisEnumValue] = xsdEnumValue;

+                        xsdDict[xsdEnumValue] = cmisEnumValue;

+                        break;

+                    }

+                }

+            }

+        }

+

+        public static Enum CmisToSerializerEnum(Enum source)

+        {

+            if (source == null) { return null; }

+

+            Enum result = null;

+

+            IDictionary<Enum, Enum> dict;

+            if (CmisToSerializerDict.TryGetValue(source.GetType(), out dict))

+            {

+                dict.TryGetValue(source, out result);

+            }

+

+            if (result == null)

+            {

+                Console.WriteLine("*** " + source);

+            }

+

+            return result;

+        }

+

+        public static Enum SerializerToCmisEnum(Enum source)

+        {

+            if (source == null) { return null; }

+

+            Enum result = null;

+

+            IDictionary<Enum, Enum> dict;

+            if (SerializerToCmisDict.TryGetValue(source.GetType(), out dict))

+            {

+                dict.TryGetValue(source, out result);

+            }

+

+            if (result == null)

+            {

+                Console.WriteLine("*** " + source);

+            }

+

+            return result;

+        }

+

+        public static string GetCmisValue(this Enum value)

+        {

+            FieldInfo fieldInfo = value.GetType().GetField(value.ToString());

+            CmisValueAttribute[] cmisValueAttr = fieldInfo.GetCustomAttributes(typeof(CmisValueAttribute), false) as CmisValueAttribute[];

+

+            return cmisValueAttr.Length > 0 ? cmisValueAttr[0].Value : null;

+        }

+

+        public static T GetCmisEnum<T>(this string value)

+        {

+            Type type = typeof(T);

+            foreach (FieldInfo fieldInfo in type.GetFields())

+            {

+                CmisValueAttribute[] cmisValueAttr = fieldInfo.GetCustomAttributes(typeof(CmisValueAttribute), false) as CmisValueAttribute[];

+                if (cmisValueAttr != null && cmisValueAttr.Length > 0 && cmisValueAttr[0].Value == value)

+                {

+                    return (T)Enum.Parse(type, fieldInfo.Name);

+                }

+            }

+

+            return default(T);

+        }

+    }

+}

diff --git a/DotCMIS/exceptions.cs b/DotCMIS/exceptions.cs
new file mode 100644
index 0000000..cc89732
--- /dev/null
+++ b/DotCMIS/exceptions.cs
@@ -0,0 +1,310 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+

+namespace DotCMIS.Exceptions

+{

+    [Serializable]

+    public class CmisBaseException : ApplicationException

+    {

+        public CmisBaseException() { Code = null; }

+        public CmisBaseException(string message) : base(message) { Code = null; }

+        public CmisBaseException(string message, Exception inner) : base(message, inner) { Code = null; }

+        protected CmisBaseException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+

+        public CmisBaseException(string message, long? code)

+            : this(message)

+        {

+            Code = code;

+        }

+

+        public CmisBaseException(string message, string errorContent)

+            : this(message)

+        {

+            ErrorContent = errorContent;

+        }

+

+        public CmisBaseException(string message, string errorContent, Exception inner)

+            : this(message, inner)

+        {

+            ErrorContent = errorContent;

+        }

+

+        public long? Code { get; protected set; }

+        public string ErrorContent { get; protected set; }

+    }

+

+    [Serializable]

+    public class CmisConnectionException : CmisBaseException

+    {

+        public CmisConnectionException() : base() { }

+        public CmisConnectionException(string message) : base(message) { }

+        public CmisConnectionException(string message, Exception inner) : base(message, inner) { }

+        protected CmisConnectionException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisConnectionException(string message, long? code)

+            : base(message) { }

+        public CmisConnectionException(string message, string errorContent)

+            : base(message) { }

+        public CmisConnectionException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisConstraintException : CmisBaseException

+    {

+        public CmisConstraintException() : base() { }

+        public CmisConstraintException(string message) : base(message) { }

+        public CmisConstraintException(string message, Exception inner) : base(message, inner) { }

+        protected CmisConstraintException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisConstraintException(string message, long? code)

+            : base(message) { }

+        public CmisConstraintException(string message, string errorContent)

+            : base(message) { }

+        public CmisConstraintException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisContentAlreadyExistsException : CmisBaseException

+    {

+        public CmisContentAlreadyExistsException() : base() { }

+        public CmisContentAlreadyExistsException(string message) : base(message) { }

+        public CmisContentAlreadyExistsException(string message, Exception inner) : base(message, inner) { }

+        protected CmisContentAlreadyExistsException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisContentAlreadyExistsException(string message, long? code)

+            : base(message) { }

+        public CmisContentAlreadyExistsException(string message, string errorContent)

+            : base(message) { }

+        public CmisContentAlreadyExistsException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisFilterNotValidException : CmisBaseException

+    {

+        public CmisFilterNotValidException() : base() { }

+        public CmisFilterNotValidException(string message) : base(message) { }

+        public CmisFilterNotValidException(string message, Exception inner) : base(message, inner) { }

+        protected CmisFilterNotValidException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisFilterNotValidException(string message, long? code)

+            : base(message) { }

+        public CmisFilterNotValidException(string message, string errorContent)

+            : base(message) { }

+        public CmisFilterNotValidException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisInvalidArgumentException : CmisBaseException

+    {

+        public CmisInvalidArgumentException() : base() { }

+        public CmisInvalidArgumentException(string message) : base(message) { }

+        public CmisInvalidArgumentException(string message, Exception inner) : base(message, inner) { }

+        protected CmisInvalidArgumentException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisInvalidArgumentException(string message, long? code)

+            : base(message) { }

+        public CmisInvalidArgumentException(string message, string errorContent)

+            : base(message) { }

+        public CmisInvalidArgumentException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisNameConstraintViolationException : CmisBaseException

+    {

+        public CmisNameConstraintViolationException() : base() { }

+        public CmisNameConstraintViolationException(string message) : base(message) { }

+        public CmisNameConstraintViolationException(string message, Exception inner) : base(message, inner) { }

+        protected CmisNameConstraintViolationException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisNameConstraintViolationException(string message, long? code)

+            : base(message) { }

+        public CmisNameConstraintViolationException(string message, string errorContent)

+            : base(message) { }

+        public CmisNameConstraintViolationException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisNotSupportedException : CmisBaseException

+    {

+        public CmisNotSupportedException() : base() { }

+        public CmisNotSupportedException(string message) : base(message) { }

+        public CmisNotSupportedException(string message, Exception inner) : base(message, inner) { }

+        protected CmisNotSupportedException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisNotSupportedException(string message, long? code)

+            : base(message) { }

+        public CmisNotSupportedException(string message, string errorContent)

+            : base(message) { }

+        public CmisNotSupportedException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisObjectNotFoundException : CmisBaseException

+    {

+        public CmisObjectNotFoundException() : base() { }

+        public CmisObjectNotFoundException(string message) : base(message) { }

+        public CmisObjectNotFoundException(string message, Exception inner) : base(message, inner) { }

+        protected CmisObjectNotFoundException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisObjectNotFoundException(string message, long? code)

+            : base(message) { }

+        public CmisObjectNotFoundException(string message, string errorContent)

+            : base(message) { }

+        public CmisObjectNotFoundException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisPermissionDeniedException : CmisBaseException

+    {

+        public CmisPermissionDeniedException() : base() { }

+        public CmisPermissionDeniedException(string message) : base(message) { }

+        public CmisPermissionDeniedException(string message, Exception inner) : base(message, inner) { }

+        protected CmisPermissionDeniedException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisPermissionDeniedException(string message, long? code)

+            : base(message) { }

+        public CmisPermissionDeniedException(string message, string errorContent)

+            : base(message) { }

+        public CmisPermissionDeniedException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisRuntimeException : CmisBaseException

+    {

+        public CmisRuntimeException() : base() { }

+        public CmisRuntimeException(string message) : base(message) { }

+        public CmisRuntimeException(string message, Exception inner) : base(message, inner) { }

+        protected CmisRuntimeException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisRuntimeException(string message, long? code)

+            : base(message) { }

+        public CmisRuntimeException(string message, string errorContent)

+            : base(message) { }

+        public CmisRuntimeException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisStorageException : CmisBaseException

+    {

+        public CmisStorageException() : base() { }

+        public CmisStorageException(string message) : base(message) { }

+        public CmisStorageException(string message, Exception inner) : base(message, inner) { }

+        protected CmisStorageException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisStorageException(string message, long? code)

+            : base(message) { }

+        public CmisStorageException(string message, string errorContent)

+            : base(message) { }

+        public CmisStorageException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisStreamNotSupportedException : CmisBaseException

+    {

+        public CmisStreamNotSupportedException() : base() { }

+        public CmisStreamNotSupportedException(string message) : base(message) { }

+        public CmisStreamNotSupportedException(string message, Exception inner) : base(message, inner) { }

+        protected CmisStreamNotSupportedException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisStreamNotSupportedException(string message, long? code)

+            : base(message) { }

+        public CmisStreamNotSupportedException(string message, string errorContent)

+            : base(message) { }

+        public CmisStreamNotSupportedException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisUpdateConflictException : CmisBaseException

+    {

+        public CmisUpdateConflictException() : base() { }

+        public CmisUpdateConflictException(string message) : base(message) { }

+        public CmisUpdateConflictException(string message, Exception inner) : base(message, inner) { }

+        protected CmisUpdateConflictException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisUpdateConflictException(string message, long? code)

+            : base(message) { }

+        public CmisUpdateConflictException(string message, string errorContent)

+            : base(message) { }

+        public CmisUpdateConflictException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+

+    [Serializable]

+    public class CmisVersioningException : CmisBaseException

+    {

+        public CmisVersioningException() : base() { }

+        public CmisVersioningException(string message) : base(message) { }

+        public CmisVersioningException(string message, Exception inner) : base(message, inner) { }

+        protected CmisVersioningException(

+          System.Runtime.Serialization.SerializationInfo info,

+          System.Runtime.Serialization.StreamingContext context)

+            : base(info, context) { }

+        public CmisVersioningException(string message, long? code)

+            : base(message) { }

+        public CmisVersioningException(string message, string errorContent)

+            : base(message) { }

+        public CmisVersioningException(string message, string errorContent, Exception inner)

+            : base(message, errorContent, inner) { }

+    }

+}

diff --git a/DotCMIS/wsdl/CMIS-Core.xsd b/DotCMIS/wsdl/CMIS-Core.xsd
new file mode 100644
index 0000000..aa427b1
--- /dev/null
+++ b/DotCMIS/wsdl/CMIS-Core.xsd
@@ -0,0 +1,1268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+	<!--
+		Licensed under the Apache License, Version 2.0 (the "License"); you
+		may not use this file except in compliance with the License. You may
+		obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/ns/cmis/core/200908/"
+	xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"
+	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+	jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1"
+	xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" version="1.0">
+
+	<!--  enums -->
+	<xs:simpleType name="enumDecimalPrecision">
+		<xs:restriction base="xs:integer">
+			<xs:enumeration value="32" />
+			<xs:enumeration value="64" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumContentStreamAllowed">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="notallowed" />
+			<xs:enumeration value="allowed" />
+			<xs:enumeration value="required" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumCardinality">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="single" />
+			<xs:enumeration value="multi" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumUpdatability">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="readonly" />
+			<xs:enumeration value="readwrite" />
+			<xs:enumeration value="whencheckedout" />
+			<xs:enumeration value="oncreate" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumDateTimeResolution">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="year" />
+			<xs:enumeration value="date" />
+			<xs:enumeration value="time" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumPropertyType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="boolean" />
+			<xs:enumeration value="id" />
+			<xs:enumeration value="integer" />
+			<xs:enumeration value="datetime" />
+			<xs:enumeration value="decimal" />
+			<xs:enumeration value="html" />
+			<xs:enumeration value="string" />
+			<xs:enumeration value="uri" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumBaseObjectTypeIds">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:document" />
+			<xs:enumeration value="cmis:folder" />
+			<xs:enumeration value="cmis:relationship" />
+			<xs:enumeration value="cmis:policy" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumCapabilityQuery">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none" />
+			<xs:enumeration value="metadataonly" />
+			<xs:enumeration value="fulltextonly" />
+			<xs:enumeration value="bothseparate" />
+			<xs:enumeration value="bothcombined" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumCapabilityJoin">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none" />
+			<xs:enumeration value="inneronly" />
+			<xs:enumeration value="innerandouter" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumCapabilityContentStreamUpdates">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="anytime" />
+			<xs:enumeration value="pwconly" />
+			<xs:enumeration value="none" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumVersioningState">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none" />
+			<xs:enumeration value="checkedout" />
+			<xs:enumeration value="minor" />
+			<xs:enumeration value="major" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumUnfileObject">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="unfile" />
+			<xs:enumeration value="deletesinglefiled" />
+			<xs:enumeration value="delete" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumRelationshipDirection">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="source" />
+			<xs:enumeration value="target" />
+			<xs:enumeration value="either" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumIncludeRelationships">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none" />
+			<xs:enumeration value="source" />
+			<xs:enumeration value="target" />
+			<xs:enumeration value="both" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<!--  properties in CMIS -->
+	<xs:simpleType name="enumPropertiesBase">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:name" />
+			<xs:enumeration value="cmis:objectId" />
+			<xs:enumeration value="cmis:objectTypeId" />
+			<xs:enumeration value="cmis:baseTypeId" />
+			<xs:enumeration value="cmis:createdBy" />
+			<xs:enumeration value="cmis:creationDate" />
+			<xs:enumeration value="cmis:lastModifiedBy" />
+			<xs:enumeration value="cmis:lastModificationDate" />
+			<xs:enumeration value="cmis:changeToken" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumPropertiesDocument">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:isImmutable" />
+			<xs:enumeration value="cmis:isLatestVersion" />
+			<xs:enumeration value="cmis:isMajorVersion" />
+			<xs:enumeration value="cmis:isLatestMajorVersion" />
+			<xs:enumeration value="cmis:versionLabel" />
+			<xs:enumeration value="cmis:versionSeriesId" />
+			<xs:enumeration value="cmis:isVersionSeriesCheckedOut" />
+			<xs:enumeration value="cmis:versionSeriesCheckedOutBy" />
+			<xs:enumeration value="cmis:versionSeriesCheckedOutId" />
+			<xs:enumeration value="cmis:checkinComment" />
+			<xs:enumeration value="cmis:contentStreamLength" />
+			<xs:enumeration value="cmis:contentStreamMimeType" />
+			<xs:enumeration value="cmis:contentStreamFileName" />
+			<xs:enumeration value="cmis:contentStreamId" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumPropertiesFolder">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:parentId" />
+			<xs:enumeration value="cmis:allowedChildObjectTypeIds" />
+			<xs:enumeration value="cmis:path" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumPropertiesRelationship">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:sourceId" />
+			<xs:enumeration value="cmis:targetId" />
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="enumPropertiesPolicy">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:policyText" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:attributeGroup name="cmisUndefinedAttribute">
+		<xs:anyAttribute namespace="##other" processContents="lax" />
+	</xs:attributeGroup>
+
+	<!--  main cmis object -->
+	<xs:complexType name="cmisObjectType">
+		<xs:sequence>
+			<xs:element name="properties" type="cmis:cmisPropertiesType"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="allowableActions" type="cmis:cmisAllowableActionsType"
+				minOccurs="0" maxOccurs="1" />
+
+			<xs:element name="relationship" type="cmis:cmisObjectType"
+				minOccurs="0" maxOccurs="unbounded" />
+
+			<!--  if change log -->
+			<xs:element name="changeEventInfo" type="cmis:cmisChangeEventType"
+				minOccurs="0" maxOccurs="1" />
+
+			<!--  ACL -->
+			<xs:element name="acl" type="cmis:cmisAccessControlListType"
+				minOccurs="0" maxOccurs="1" />
+
+			<xs:element name="exactACL" type="xs:boolean" minOccurs="0"
+				maxOccurs="1" />
+
+			<!-- Applied Policy IDs -->
+			<xs:element name="policyIds" type="cmis:cmisListOfIdsType"
+				minOccurs="0" maxOccurs="1" />
+
+			<!--  Rendition -->
+			<xs:element name="rendition" type="cmis:cmisRenditionType"
+				minOccurs="0" maxOccurs="unbounded" />
+
+			<!--  extensions -->
+			<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"
+				namespace="##other" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+
+	<!-- property bag -->
+	<xs:attribute name="key" type="xs:string" />
+	<xs:attribute name="index" type="xs:integer" />
+
+	<xs:complexType name="cmisPropertiesType">
+		<xs:sequence>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:appinfo>
+						<jaxb:property name="property" />
+					</xs:appinfo>
+				</xs:annotation>
+				<xs:element name="propertyBoolean" type="cmis:cmisPropertyBoolean"
+					nillable="true" />
+				<xs:element name="propertyId" type="cmis:cmisPropertyId"
+					nillable="true" />
+				<xs:element name="propertyInteger" type="cmis:cmisPropertyInteger"
+					nillable="true" />
+				<xs:element name="propertyDateTime" type="cmis:cmisPropertyDateTime"
+					nillable="true" />
+				<xs:element name="propertyDecimal" type="cmis:cmisPropertyDecimal"
+					nillable="true" />
+				<xs:element name="propertyHtml" type="cmis:cmisPropertyHtml"
+					nillable="true" />
+				<xs:element name="propertyString" type="cmis:cmisPropertyString"
+					nillable="true" />
+				<xs:element name="propertyUri" type="cmis:cmisPropertyUri"
+					nillable="true" />
+			</xs:choice>
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+
+	<!-- start the prop definitions -->
+	<xs:complexType name="cmisProperty">
+		<xs:attribute name="propertyDefinitionId" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					This is the property definition id for this
+					property instance. This is
+					not required to be set when used as a
+					default value. This is
+					required to be set when used for query result
+					set or returning
+					properties on an object.
+		</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="localName" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					This is the localname as defined by the property
+					definition
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="displayName" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					This is the displayname as defined by the property
+					definition
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="queryName" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					This is the queryName. This must be specified if
+					this is the result of a query. If aliases are used, the alias is to
+					be specified here instead of the queryName.
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyBoolean">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:boolean" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyId">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:string" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyInteger">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:integer" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyDateTime">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:dateTime" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyDecimal">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:decimal" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyHtml">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:string" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+
+	<xs:complexType name="cmisPropertyString">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:string" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyUri">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisProperty">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:anyURI" />
+					<xs:any processContents="lax" namespace="##other" minOccurs="0"
+						maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+
+	<!-- cmis choice -->
+	<xs:complexType name="cmisChoice">
+		<xs:attribute name="displayName" use="required" />
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+	<xs:complexType name="cmisChoiceBoolean">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:boolean" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceBoolean" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisChoiceId">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:string" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceId" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisChoiceInteger">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:integer" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceInteger" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisChoiceDateTime">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:dateTime" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceDateTime" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisChoiceDecimal">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:decimal" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceDecimal" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisChoiceHtml">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:string" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceHtml" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<xs:complexType name="cmisChoiceString">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:string" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceString" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisChoiceUri">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisChoice">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
+						type="xs:anyURI" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceUri" />
+				</xs:sequence>
+
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+
+	<!--  allowable actions -->
+	<xs:complexType name="cmisAllowableActionsType">
+		<xs:sequence>
+			<xs:element name="canDeleteObject" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canUpdateProperties" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetFolderTree" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetProperties" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetObjectRelationships" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetObjectParents" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetFolderParent" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetDescendants" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canMoveObject" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canDeleteContentStream" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canCheckOut" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canCancelCheckOut" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canCheckIn" type="xs:boolean" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="canSetContentStream" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetAllVersions" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canAddObjectToFolder" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canRemoveObjectFromFolder" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetContentStream" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canApplyPolicy" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetAppliedPolicies" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canRemovePolicy" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canGetChildren" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canCreateDocument" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canCreateFolder" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canCreateRelationship" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="canDeleteTree" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+
+			<!-- renditions -->
+			<xs:element name="canGetRenditions" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+
+			<!-- ACL -->
+			<xs:element name="canGetACL" type="xs:boolean" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="canApplyACL" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+
+	<xs:complexType name="cmisListOfIdsType">
+		<xs:sequence>
+			<xs:element name="id" type="xs:string" minOccurs="1"
+				maxOccurs="unbounded" />
+
+			<!--  extension -->
+			<xs:any processContents="lax" namespace="##other" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+
+	<!-- Property Attributes -->
+	<xs:complexType name="cmisPropertyDefinitionType">
+		<xs:sequence>
+			<xs:element name="id" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="localName" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="localNamespace" type="xs:anyURI"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="displayName" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="queryName" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="description" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="propertyType" type="cmis:enumPropertyType"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="cardinality" type="cmis:enumCardinality"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="updatability" type="cmis:enumUpdatability"
+				minOccurs="1" maxOccurs="1" />
+
+			<!-- flags -->
+			<xs:element name="inherited" type="xs:boolean" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="required" type="xs:boolean" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="queryable" type="xs:boolean" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="orderable" type="xs:boolean" minOccurs="1"
+				maxOccurs="1" />
+
+			<xs:element name="openChoice" type="xs:boolean" minOccurs="0"
+				maxOccurs="1" />
+
+			<!--  extension -->
+			<xs:any processContents="lax" namespace="##other" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+	<!--  type specific definitions -->
+	<xs:complexType name="cmisPropertyBooleanDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyBoolean" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceBoolean" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyIdDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyId" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceId" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyIntegerDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyInteger" />
+					<xs:element name="maxValue" type="xs:integer" minOccurs="0"
+						maxOccurs="1" />
+					<xs:element name="minValue" type="xs:integer" minOccurs="0"
+						maxOccurs="1" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceInteger" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyDateTimeDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyDateTime" />
+					<xs:element minOccurs="0" maxOccurs="1" name="resolution"
+						type="cmis:enumDateTimeResolution" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceDateTime" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyDecimalDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyDecimal" />
+					<xs:element name="maxValue" type="xs:decimal" minOccurs="0"
+						maxOccurs="1" />
+					<xs:element name="minValue" type="xs:decimal" minOccurs="0"
+						maxOccurs="1" />
+					<xs:element name="precision" type="cmis:enumDecimalPrecision"
+						minOccurs="0" maxOccurs="1" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceDecimal" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyHtmlDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyHtml" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceHtml" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyStringDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyString" />
+					<xs:element name="maxLength" type="xs:integer"
+						minOccurs="0" maxOccurs="1" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceString" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisPropertyUriDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisPropertyDefinitionType">
+				<xs:sequence>
+					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
+						type="cmis:cmisPropertyUri" />
+					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
+						type="cmis:cmisChoiceUri" />
+
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+
+	<!-- type definition -->
+	<xs:complexType name="cmisTypeDefinitionType">
+		<xs:sequence>
+			<!--  primary identifying attribute -->
+			<xs:element name="id" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="localName" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="localNamespace" type="xs:anyURI"
+				minOccurs="1" maxOccurs="1" nillable="true" />
+			<xs:element name="displayName" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="queryName" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="description" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+
+			<!--  base type -->
+			<xs:element name="baseId" type="cmis:enumBaseObjectTypeIds"
+				minOccurs="1" maxOccurs="1" />
+
+			<!-- parent -->
+			<xs:element name="parentId" type="xs:string" minOccurs="0"
+				maxOccurs="1">
+				<xs:annotation>
+					<xs:documentation>
+						This is the id for the parent type definition. If
+						this is a base type,
+						this is not present.
+			</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+
+			<!-- flags -->
+			<xs:element name="creatable" type="xs:boolean" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="fileable" type="xs:boolean" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="queryable" type="xs:boolean" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="fulltextIndexed" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="includedInSupertypeQuery" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" default="true" />
+
+			<!-- controllable -->
+			<xs:element name="controllablePolicy" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="controllableACL" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+
+			<!-- property definitions -->
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:appinfo>
+						<jaxb:property name="propertyDefinition" />
+					</xs:appinfo>
+				</xs:annotation>
+				<xs:element name="propertyBooleanDefinition" type="cmis:cmisPropertyBooleanDefinitionType" />
+				<xs:element name="propertyDateTimeDefinition"
+					type="cmis:cmisPropertyDateTimeDefinitionType" />
+				<xs:element name="propertyDecimalDefinition" type="cmis:cmisPropertyDecimalDefinitionType" />
+				<xs:element name="propertyIdDefinition" type="cmis:cmisPropertyIdDefinitionType" />
+				<xs:element name="propertyIntegerDefinition" type="cmis:cmisPropertyIntegerDefinitionType" />
+				<xs:element name="propertyHtmlDefinition" type="cmis:cmisPropertyHtmlDefinitionType" />
+				<xs:element name="propertyStringDefinition" type="cmis:cmisPropertyStringDefinitionType" />
+				<xs:element name="propertyUriDefinition" type="cmis:cmisPropertyUriDefinitionType" />
+			</xs:choice>
+
+			<!-- extension -->
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+
+	<!-- type specific typedefs -->
+	<xs:complexType name="cmisTypeDocumentDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisTypeDefinitionType">
+				<xs:sequence>
+					<xs:element name="versionable" type="xs:boolean"
+						minOccurs="1" maxOccurs="1" />
+					<xs:element name="contentStreamAllowed" type="cmis:enumContentStreamAllowed"
+						minOccurs="1" maxOccurs="1" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisTypeFolderDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisTypeDefinitionType">
+				<xs:sequence>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisTypeRelationshipDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisTypeDefinitionType">
+				<xs:sequence>
+					<xs:element name="allowedSourceTypes" type="xs:string"
+						minOccurs="0" maxOccurs="unbounded" />
+					<xs:element name="allowedTargetTypes" type="xs:string"
+						minOccurs="0" maxOccurs="unbounded" />
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="cmisTypePolicyDefinitionType">
+		<xs:complexContent>
+			<xs:extension base="cmis:cmisTypeDefinitionType">
+				<xs:sequence>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+
+	<!--  query -->
+	<xs:complexType name="cmisQueryType">
+		<xs:sequence>
+			<xs:element name="statement" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="searchAllVersions" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+
+			<xs:element name="includeAllowableActions" type="xs:boolean"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="renditionFilter" type="xs:string"
+				minOccurs="0" maxOccurs="1" />
+
+			<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+				maxOccurs="1" />
+			<xs:element name="skipCount" type="xs:integer" minOccurs="0"
+				maxOccurs="1" />
+
+			<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other"
+				processContents="lax" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+
+
+	<!--  repository info -->
+	<xs:complexType name="cmisRepositoryInfoType">
+		<xs:sequence minOccurs="1">
+			<xs:element name="repositoryId" type="xs:string"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="repositoryName" type="xs:string"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="repositoryDescription" type="xs:string"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="vendorName" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="productName" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="productVersion" type="xs:string"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="rootFolderId" type="xs:string" />
+			<xs:element name="latestChangeLogToken" type="xs:string"
+				minOccurs="0" />
+			<xs:element name="capabilities" type="cmis:cmisRepositoryCapabilitiesType"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="aclCapability" type="cmis:cmisACLCapabilityType"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="cmisVersionSupported" type="xs:string"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="thinClientURI" type="xs:anyURI"
+				minOccurs="0" maxOccurs="1" />
+			<xs:element name="changesIncomplete" type="xs:boolean"
+				maxOccurs="1" minOccurs="0" />
+			<xs:element name="changesOnType" type="cmis:enumBaseObjectTypeIds"
+				minOccurs="0" maxOccurs="unbounded" />
+
+			<xs:element name="principalAnonymous" type="xs:string"
+				minOccurs="0" maxOccurs="1">
+				<xs:annotation>
+					<xs:documentation>
+						If set, this field holds the principal who is
+						used for anonymous
+						access. This principal can then be passed to the
+						ACL services to
+						specify what permissions anonymous users should
+						have
+					</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+
+			<xs:element name="principalAnyone" type="xs:string"
+				minOccurs="0" maxOccurs="1">
+				<xs:annotation>
+					<xs:documentation>
+						If set, this field holds the principal who is
+						used for everyone's access. This principal can then be passed to
+						the
+						ACL services to
+						specify what permissions everyone should
+						have
+					</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+	<xs:complexType name="cmisRepositoryCapabilitiesType">
+		<xs:sequence>
+			<xs:element name="capabilityACL" type="cmis:enumCapabilityACL"
+				maxOccurs="1" minOccurs="1" />
+			<xs:element name="capabilityAllVersionsSearchable" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityChanges" type="cmis:enumCapabilityChanges" />
+
+			<xs:element name="capabilityContentStreamUpdatability"
+				type="cmis:enumCapabilityContentStreamUpdates" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="capabilityGetDescendants" type="xs:boolean"
+				maxOccurs="1" minOccurs="1" />
+			<xs:element name="capabilityGetFolderTree" type="xs:boolean"
+				maxOccurs="1" minOccurs="1" />
+
+			<xs:element name="capabilityMultifiling" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityPWCSearchable" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityPWCUpdatable" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityQuery" type="cmis:enumCapabilityQuery"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityRenditions" type="cmis:enumCapabilityRendition"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityUnfiling" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityVersionSpecificFiling" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="capabilityJoin" type="cmis:enumCapabilityJoin"
+				minOccurs="1" maxOccurs="1" />
+
+			<!-- extension -->
+			<xs:any namespace="##other" processContents="skip" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+	<!-- Unified Search -->
+	<xs:simpleType name="enumTypeOfChanges">
+		<xs:restriction base="xs:string">
+			<!-- content with a new ID has been created -->
+			<xs:enumeration value="created" />
+			<!-- content with an existing ID has been modified -->
+			<xs:enumeration value="updated" />
+			<!-- content with an existing ID has been deleted -->
+			<xs:enumeration value="deleted" />
+			<!-- content with an existing ID has had its security policy changed-->
+			<xs:enumeration value="security" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumCapabilityChanges">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none" />
+			<xs:enumeration value="objectidsonly" />
+			<xs:enumeration value="properties" />
+			<xs:enumeration value="all" />
+		</xs:restriction>
+	</xs:simpleType>
+
+
+
+	<xs:complexType name="cmisChangeEventType">
+		<xs:sequence>
+			<xs:element name="changeType" type="cmis:enumTypeOfChanges" />
+			<xs:element name="changeTime" type="xs:dateTime" />
+
+			<!--  extension -->
+			<xs:any processContents="lax" namespace="##other" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<!-- ACL -->
+	<xs:simpleType name="enumACLPropagation">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="repositorydetermined" />
+			<xs:enumeration value="objectonly" />
+			<xs:enumeration value="propagate" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumCapabilityACL">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none" />
+			<xs:enumeration value="discover" />
+			<xs:enumeration value="manage" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumBasicPermissions">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:read" />
+			<xs:enumeration value="cmis:write" />
+			<xs:enumeration value="cmis:all" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:complexType name="cmisPermissionDefinition">
+		<xs:sequence>
+			<xs:element name="permission" type="xs:string" />
+			<xs:element name="description" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:any namespace="##other" minOccurs="0" processContents="lax"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="cmisPermissionMapping">
+		<xs:sequence>
+			<xs:element name="key" type="cmis:enumAllowableActionsKey"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="permission" type="xs:string" minOccurs="1"
+				maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>
+						Multiple entries are OR'ed together. Any
+						permission that specified is
+						sufficient to provide rights required
+						in key
+					</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+	</xs:complexType>
+
+
+	<xs:simpleType name="enumAllowableActionsKey">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="canGetDescendents.Folder" />
+			<xs:enumeration value="canGetChildren.Folder" />
+			<xs:enumeration value="canGetParents.Folder" />
+			<xs:enumeration value="canGetFolderParent.Object" />
+			<xs:enumeration value="canCreateDocument.Folder" />
+			<xs:enumeration value="canCreateFolder.Folder" />
+			<xs:enumeration value="canCreateRelationship.Source" />
+			<xs:enumeration value="canCreateRelationship.Target" />
+			<xs:enumeration value="canGetProperties.Object" />
+			<xs:enumeration value="canViewContent.Object" />
+			<xs:enumeration value="canUpdateProperties.Object" />
+			<xs:enumeration value="canMove.Object" />
+			<xs:enumeration value="canMove.Target" />
+			<xs:enumeration value="canMove.Source" />
+			<xs:enumeration value="canDelete.Object" />
+			<xs:enumeration value="canDeleteTree.Folder" />
+			<xs:enumeration value="canSetContent.Document" />
+			<xs:enumeration value="canDeleteContent.Document" />
+			<xs:enumeration value="canAddToFolder.Object" />
+			<xs:enumeration value="canAddToFolder.Folder" />
+			<xs:enumeration value="canRemoveFromFolder.Object" />
+			<xs:enumeration value="canRemoveFromFolder.Folder" />
+			<xs:enumeration value="canCheckout.Document" />
+			<xs:enumeration value="canCancelCheckout.Document" />
+			<xs:enumeration value="canCheckin.Document" />
+			<xs:enumeration value="canGetAllVersions.VersionSeries" />
+			<xs:enumeration value="canGetObjectRelationships.Object" />
+			<xs:enumeration value="canAddPolicy.Object" />
+			<xs:enumeration value="canAddPolicy.Policy" />
+			<xs:enumeration value="canRemovePolicy.Object" />
+			<xs:enumeration value="canRemovePolicy.Policy" />
+			<xs:enumeration value="canGetAppliedPolicies.Object" />
+			<xs:enumeration value="canGetACL.Object" />
+			<xs:enumeration value="canApplyACL.Object" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumUsers">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:user">
+				<xs:annotation>
+					<xs:documentation>
+						This user can be used on setting ACLs to specify
+						the permission this
+						user context should have.
+			</xs:documentation>
+				</xs:annotation>
+			</xs:enumeration>
+		</xs:restriction>
+	</xs:simpleType>
+
+	<!-- ACL on objects -->
+	<xs:complexType name="cmisAccessControlPrincipalType">
+		<xs:sequence>
+			<xs:element name="principalId" type="xs:string" />
+
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="cmisAccessControlEntryType">
+		<xs:sequence>
+			<xs:element name="principal" type="cmis:cmisAccessControlPrincipalType" />
+			<xs:element name="permission" type="xs:string" minOccurs="1"
+				maxOccurs="unbounded" />
+			<xs:element name="direct" type="xs:boolean" />
+
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="cmisAccessControlListType">
+		<xs:sequence>
+			<xs:element name="permission" type="cmis:cmisAccessControlEntryType"
+				minOccurs="1" maxOccurs="unbounded" />
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+	</xs:complexType>
+
+
+	<xs:complexType name="cmisACLCapabilityType">
+		<xs:sequence>
+			<xs:element name="supportedPermissions" type="cmis:enumSupportedPermissions" />
+			<xs:element name="propagation" type="cmis:enumACLPropagation" />
+			<xs:element name="permissions" type="cmis:cmisPermissionDefinition"
+				minOccurs="1" maxOccurs="unbounded" />
+			<xs:element name="mapping" type="cmis:cmisPermissionMapping"
+				minOccurs="0" maxOccurs="unbounded" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:simpleType name="enumSupportedPermissions">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="basic" />
+			<xs:enumeration value="repository" />
+			<xs:enumeration value="both" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<!-- renditions -->
+	<xs:simpleType name="enumCapabilityRendition">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none" />
+			<xs:enumeration value="read" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:simpleType name="enumRenditionKind">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="cmis:thumbnail" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<xs:complexType name="cmisRenditionType">
+		<xs:sequence>
+			<xs:element name="streamId" type="xs:string" />
+			<xs:element name="mimetype" type="xs:string" />
+			<xs:element name="length" type="xs:integer" />
+			<xs:element name="kind" type="xs:string" />
+			<xs:element name="title" type="xs:string" minOccurs="0" />
+			<xs:element name="height" type="xs:integer" minOccurs="0" />
+			<xs:element name="width" type="xs:integer" minOccurs="0" />
+			<xs:element name="renditionDocumentId" type="xs:string"
+				minOccurs="0" />
+
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+	</xs:complexType>
+
+
+	<!-- elements -->
+	<xs:element name="allowableActions" type="cmis:cmisAllowableActionsType">
+		<xs:annotation>
+			<xs:documentation>
+				This is the root tag for a CMIS AllowableActions
+				Document Type
+			</xs:documentation>
+		</xs:annotation>
+	</xs:element>
+
+	<xs:element name="query" type="cmis:cmisQueryType">
+		<xs:annotation>
+			<xs:documentation>
+				This is the root tag for a CMIS Query Document Type
+			</xs:documentation>
+		</xs:annotation>
+	</xs:element>
+	<xs:element name="acl" type="cmis:cmisAccessControlListType">
+		<xs:annotation>
+			<xs:documentation>
+				This is the root tag for a CMIS ACL Document Type
+			</xs:documentation>
+		</xs:annotation>
+	</xs:element>
+</xs:schema>
+	<!-- EOF -->
\ No newline at end of file
diff --git a/DotCMIS/wsdl/CMIS-Messaging.xsd b/DotCMIS/wsdl/CMIS-Messaging.xsd
new file mode 100644
index 0000000..a6ad787
--- /dev/null
+++ b/DotCMIS/wsdl/CMIS-Messaging.xsd
@@ -0,0 +1,2072 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+	<!--
+		Licensed under the Apache License, Version 2.0 (the "License"); you
+		may not use this file except in compliance with the License. You may
+		obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/"
+	xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"
+	xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/"
+	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" version="1.0"
+	xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+	jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1"
+	elementFormDefault="qualified">
+
+	<xs:import schemaLocation="CMIS-Core.xsd"
+		namespace="http://docs.oasis-open.org/ns/cmis/core/200908/" />
+
+	<!-- exceptions -->
+	<xs:complexType name="cmisFaultType">
+		<xs:sequence>
+			<xs:element name="type" type="cmism:enumServiceException" />
+			<xs:element name="code" type="xs:integer" />
+			<xs:element name="message" type="xs:string" />
+			<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:element name="cmisFault" type="cmism:cmisFaultType" />
+	<xs:simpleType name="enumServiceException">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="constraint" />
+			<xs:enumeration value="nameConstraintViolation" />
+			<xs:enumeration value="contentAlreadyExists" />
+			<xs:enumeration value="filterNotValid" />
+			<xs:enumeration value="invalidArgument" />
+			<xs:enumeration value="notSupported" />
+			<xs:enumeration value="objectNotFound" />
+			<xs:enumeration value="permissionDenied" />
+			<xs:enumeration value="runtime" />
+			<xs:enumeration value="storage" />
+			<xs:enumeration value="streamNotSupported" />
+			<xs:enumeration value="updateConflict" />
+			<xs:enumeration value="versioning" />
+		</xs:restriction>
+	</xs:simpleType>
+
+	<!-- extension -->
+	<xs:complexType name="cmisExtensionType">
+		<xs:sequence>
+			<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
+		</xs:sequence>
+	</xs:complexType>
+	
+	<!-- types for WS -->
+	<xs:complexType name="cmisTypeContainer">
+		<xs:sequence>
+			<xs:element name="type" type="cmis:cmisTypeDefinitionType" 
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="children" type="cmism:cmisTypeContainer"
+				minOccurs="0" maxOccurs="unbounded" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+	<xs:complexType name="cmisTypeDefinitionListType">
+		<xs:sequence>
+			<xs:element name="types" type="cmis:cmisTypeDefinitionType"
+				minOccurs="0" maxOccurs="unbounded" />
+			<xs:element name="hasMoreItems" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="numItems" type="xs:integer" minOccurs="0"
+				maxOccurs="1" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+	
+	<xs:complexType name="cmisObjectInFolderContainerType">
+		<xs:sequence>
+			<xs:element name="objectInFolder" type="cmism:cmisObjectInFolderType"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="children" type="cmism:cmisObjectInFolderContainerType"
+				minOccurs="0" maxOccurs="unbounded" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />	
+	</xs:complexType>
+
+	<xs:complexType name="cmisObjectListType">
+		<xs:sequence>
+			<xs:element name="objects" type="cmis:cmisObjectType"
+				minOccurs="0" maxOccurs="unbounded" />
+			<xs:element name="hasMoreItems" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="numItems" type="xs:integer" minOccurs="0"
+				maxOccurs="1" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />		
+	</xs:complexType>
+	
+	<xs:complexType name="cmisObjectInFolderType">
+		<xs:sequence>
+			<xs:element name="object" type="cmis:cmisObjectType" 
+				minOccurs="1" maxOccurs="1"/>
+			<xs:element name="pathSegment" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />		
+	</xs:complexType>
+
+	<xs:complexType name="cmisObjectParentsType">
+		<xs:sequence>
+			<xs:element name="object" type="cmis:cmisObjectType" 
+				minOccurs="1" maxOccurs="1"/>
+			<xs:element name="relativePathSegment" type="xs:string" minOccurs="0"
+				maxOccurs="1" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" /> 
+	</xs:complexType>
+	
+	<xs:complexType name="cmisObjectInFolderListType">
+		<xs:sequence>
+			<xs:element name="objects" type="cmism:cmisObjectInFolderType"
+				minOccurs="0" maxOccurs="unbounded" />
+			<xs:element name="hasMoreItems" type="xs:boolean"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="numItems" type="xs:integer" minOccurs="0"
+				maxOccurs="1" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+	
+	<xs:complexType name="cmisRepositoryEntryType">
+		<xs:sequence>
+			<xs:element name="repositoryId" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:element name="repositoryName" type="xs:string" minOccurs="1"
+				maxOccurs="1" />
+			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+				processContents="lax" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+	<xs:complexType name="cmisContentStreamType">
+		<xs:sequence>
+			<xs:element name="length" type="xs:integer" minOccurs="0" />
+			<xs:element name="mimeType" type="xs:string" minOccurs="0" />
+			<xs:element name="filename" type="xs:string" minOccurs="0" />
+			<xs:element name="stream" type="xs:base64Binary"
+				xmime:expectedContentTypes="application/octet-stream" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" />
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+
+	<xs:complexType name="cmisACLType">
+		<xs:sequence>
+			<xs:element name="ACL" type="cmis:cmisAccessControlListType"
+				minOccurs="1" maxOccurs="1" />
+			<xs:element name="exact" type="xs:boolean" 
+				minOccurs="0" maxOccurs="1"/>
+			<xs:any namespace="##other" processContents="lax" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xs:sequence>
+		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+	</xs:complexType>
+	
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!-- [Repository Services] -->
+	
+	<!-- getRepositories Operation -->
+	<xs:element name="getRepositories">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getRepositoriesResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositories" type="cmism:cmisRepositoryEntryType"
+					minOccurs="0" maxOccurs="unbounded" nillable="true" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+
+	<!-- getRepositoryInfo Operation -->
+	<xs:element name="getRepositoryInfo">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getRepositoryInfoResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryInfo" type="cmis:cmisRepositoryInfoType" 
+					minOccurs="1" maxOccurs="1"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getTypeChildren Operation -->
+	<xs:element name="getTypeChildren">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="typeId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includePropertyDefinitions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="skipCount" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getTypeChildrenResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="types" type="cmism:cmisTypeDefinitionListType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getTypeDescendants Operation -->
+	<xs:element name="getTypeDescendants">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="typeId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="depth" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includePropertyDefinitions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getTypeDescendantsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="types" type="cmism:cmisTypeContainer"
+					minOccurs="0" maxOccurs="unbounded" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getTypeDefinition Operation -->
+	<xs:element name="getTypeDefinition">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="typeId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getTypeDefinitionResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="type" type="cmis:cmisTypeDefinitionType"
+					minOccurs="0" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!-- [Navigation Services] -->
+	
+	<!-- getDescendants Operation -->
+	<xs:element name="getDescendants">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="depth" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includePathSegment" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getDescendantsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmism:cmisObjectInFolderContainerType"
+					minOccurs="0" maxOccurs="unbounded" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getDescendants Operation -->
+	<xs:element name="getFolderTree">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="depth" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+					
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includePathSegment" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getFolderTreeResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmism:cmisObjectInFolderContainerType"
+					minOccurs="0" maxOccurs="unbounded" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getChildren Operation -->
+	<xs:element name="getChildren">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="orderBy" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includePathSegment" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="skipCount" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getChildrenResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmism:cmisObjectInFolderListType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getFolderParent Operation -->
+	<xs:element name="getFolderParent">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getFolderParentResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="object" type="cmis:cmisObjectType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getObjectParents Operation-->
+	<xs:element name="getObjectParents">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelativePathSegment" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getObjectParentsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="parents" type="cmism:cmisObjectParentsType"
+					minOccurs="0" maxOccurs="unbounded" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getRenditions Operation -->
+	<xs:element name="getRenditions">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="skipCount" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getRenditionsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="renditions" type="cmis:cmisRenditionType"
+					minOccurs="0" maxOccurs="unbounded" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getCheckedoutDocs Operation -->
+	<xs:element name="getCheckedOutDocs">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="orderBy" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="skipCount" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getCheckedOutDocsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmism:cmisObjectListType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!-- [Object Services] -->
+	
+	<!-- createDocument Operation -->
+	<xs:element name="createDocument">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="contentStream" type="cmism:cmisContentStreamType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="versioningState" type="cmis:enumVersioningState"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="policies" type="xs:string"
+					minOccurs="0" maxOccurs="unbounded" nillable="true" />
+				<xs:element name="addACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="removeACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="createDocumentResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- createDocumentFromSource Operation -->
+	<xs:element name="createDocumentFromSource">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="sourceId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />					
+				<xs:element name="folderId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="versioningState" type="cmis:enumVersioningState"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="policies" type="xs:string"
+					minOccurs="0" maxOccurs="unbounded" nillable="true" />
+				<xs:element name="addACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="removeACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+					
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="createDocumentFromSourceResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- createFolder Operation -->
+	<xs:element name="createFolder">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="policies" type="xs:string"
+					minOccurs="0" maxOccurs="unbounded" nillable="true" />
+				<xs:element name="addACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="removeACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="createFolderResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- createRelationship Operation -->
+	<xs:element name="createRelationship">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />
+
+				<xs:element name="policies" type="xs:string"
+					minOccurs="0" maxOccurs="unbounded" nillable="true" />
+				<xs:element name="addACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="removeACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="createRelationshipResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- createPolicy Operation -->
+	<xs:element name="createPolicy">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="policies" type="xs:string"
+					minOccurs="0" maxOccurs="unbounded" nillable="true" />
+				<xs:element name="addACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="removeACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="createPolicyResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	
+	<!-- getAllowableActions Operation -->
+	<xs:element name="getAllowableActions">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getAllowableActionsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="allowableActions" type="cmis:cmisAllowableActionsType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getProperties Operation -->
+	<xs:element name="getProperties">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getPropertiesResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getObject Operation -->
+	<xs:element name="getObject">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="filter" type="xs:string" 
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includePolicyIds" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeACL" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getObjectResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="object" type="cmis:cmisObjectType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getObjectByPath Operation -->
+	<xs:element name="getObjectByPath">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="path" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="filter" type="xs:string" 
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includePolicyIds" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeACL" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+					
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getObjectByPathResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="object" type="cmis:cmisObjectType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getContentStream Operation -->
+	<xs:element name="getContentStream">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="streamId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="offset" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="length" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+					
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getContentStreamResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="contentStream" type="cmism:cmisContentStreamType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- updateProperties Operation -->
+	<xs:element name="updateProperties">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<!--
+					if objectId is present in the properties the value must match this
+					objectId
+				-->
+				<xs:element name="changeToken" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />
+					
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="updatePropertiesResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="changeToken" type="xs:string"
+					minOccurs="0" maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- moveObject Operation -->
+	<xs:element name="moveObject">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="targetFolderId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="sourceFolderId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="moveObjectResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- deleteObject Operation -->
+	<xs:element name="deleteObject">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="allVersions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="deleteObjectResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- deleteTree Operation -->
+	<xs:element name="deleteTree">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="allVersions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="unfileObjects" type="cmis:enumUnfileObject"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="continueOnFailure" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="deleteTreeResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="failedToDelete">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="objectIds" type="xs:string"
+								minOccurs="0" maxOccurs="unbounded" />
+							<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+								processContents="lax" />
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- setContentStream Operation -->
+	<xs:element name="setContentStream">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="overwriteFlag" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="changeToken" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="contentStream" type="cmism:cmisContentStreamType"
+					minOccurs="1" maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="setContentStreamResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="changeToken" type="xs:string"
+					minOccurs="0" maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- deleteContentStream Operation -->
+	<xs:element name="deleteContentStream">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="changeToken" type="xs:string"
+					minOccurs="0" maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="deleteContentStreamResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="changeToken" type="xs:string"
+					minOccurs="0" maxOccurs="1" />
+				
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!--[Multi-filing Services]-->
+
+	<!-- addObjectToFolder Operation -->
+	<xs:element name="addObjectToFolder">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="allVersions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="addObjectToFolderResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- removeObjectFromFolder Operation -->
+	<xs:element name="removeObjectFromFolder">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="folderId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="removeObjectFromFolderResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!-- [Discovery Services] -->
+	
+	<!-- query Operation -->
+	<xs:element name="query">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="statement" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="searchAllVersions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="skipCount" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+			<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="queryResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmism:cmisObjectListType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getContentChanges operation -->
+	<xs:element name="getContentChanges">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="changeLogToken" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeProperties" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includePolicyIds" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeACL" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getContentChangesResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmism:cmisObjectListType"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="changeLogToken" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!-- [Versioning Services] -->
+
+	<!-- checkOut Operation -->
+	<xs:element name="checkOut">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="checkOutResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="contentCopied" type="xs:boolean"
+					minOccurs="1" maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- cancelCheckOut Operation -->
+	<xs:element name="cancelCheckOut">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="cancelCheckOutResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- checkIn Operation -->
+	<xs:element name="checkIn">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="major" type="xs:boolean" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="contentStream" type="cmism:cmisContentStreamType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="checkinComment" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="policies" type="xs:string"
+					minOccurs="0" maxOccurs="unbounded" nillable="true" />
+				<xs:element name="addACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="removeACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="checkInResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getPropertiesOfLatestVersion -->
+	<xs:element name="getPropertiesOfLatestVersion">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="major" type="xs:boolean" minOccurs="0"
+					maxOccurs="1" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getPropertiesOfLatestVersionResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="properties" type="cmis:cmisPropertiesType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getObjectOfLatestVersion Operation -->
+	<xs:element name="getObjectOfLatestVersion">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="major" type="xs:boolean" minOccurs="0"
+					maxOccurs="1" />
+				<xs:element name="filter" type="xs:string" 
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="renditionFilter" type="xs:string"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includePolicyIds" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="includeACL" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getObjectOfLatestVersionResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="object" type="cmis:cmisObjectType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getAllVersions Operation -->
+	<xs:element name="getAllVersions">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getAllVersionsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmis:cmisObjectType"
+					minOccurs="0" maxOccurs="unbounded" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!--[Relationship Services]-->
+
+	<!-- getRelationships Operation -->
+	<xs:element name="getObjectRelationships">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="includeSubRelationshipTypes" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" />
+				<xs:element name="relationshipDirection" type="cmis:enumRelationshipDirection"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+				<xs:element name="typeId" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="includeAllowableActions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="maxItems" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+				<xs:element name="skipCount" type="xs:integer" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getObjectRelationshipsResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmism:cmisObjectListType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+	<!--[Policy Services]-->
+
+	<!-- applyPolicy Operation -->
+	<xs:element name="applyPolicy">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="policyId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="applyPolicyResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- removePolicy Operation -->
+	<xs:element name="removePolicy">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="policyId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="removePolicyResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getAppliedPolicies Operation -->
+	<xs:element name="getAppliedPolicies">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="filter" type="xs:string" minOccurs="0"
+					maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getAppliedPoliciesResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="objects" type="cmis:cmisObjectType"
+					minOccurs="0" maxOccurs="unbounded" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+	<!-- getACL Operation -->
+	<xs:element name="getACL">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="onlyBasicPermissions" type="xs:boolean"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+						</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="getACLResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ACL" type="cmism:cmisACLType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>	
+	</xs:element>
+	
+	<!-- applyACL Operation -->
+	<xs:element name="applyACL">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="repositoryId" type="xs:string"
+					minOccurs="1" maxOccurs="1" />
+				<xs:element name="objectId" type="xs:string" minOccurs="1"
+					maxOccurs="1" />
+				<xs:element name="addACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" />
+				<xs:element name="removeACEs" type="cmis:cmisAccessControlListType"
+					minOccurs="0" maxOccurs="1" />
+				<xs:element name="ACLPropagation" type="cmis:enumACLPropagation"
+					minOccurs="0" maxOccurs="1" nillable="true" />
+
+				<xs:element name="extension" type="cmism:cmisExtensionType"
+					minOccurs="0" maxOccurs="1" nillable="true">
+					<xs:annotation>
+						<xs:documentation>
+							This is an extension element to hold any
+							repository or
+							vendor-specific extensions
+					</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="applyACLResponse">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="ACL" type="cmism:cmisACLType"
+					minOccurs="1" maxOccurs="1" />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+
+</xs:schema>
\ No newline at end of file
diff --git a/DotCMIS/wsdl/CMISWS-Service.wsdl b/DotCMIS/wsdl/CMISWS-Service.wsdl
new file mode 100644
index 0000000..b749511
--- /dev/null
+++ b/DotCMIS/wsdl/CMISWS-Service.wsdl
@@ -0,0 +1,1173 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+	<!--
+		Licensed under the Apache License, Version 2.0 (the "License"); you
+		may not use this file except in compliance with the License. You may
+		obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+
+<definitions xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"
+	xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/"
+	xmlns:cmisw="http://docs.oasis-open.org/ns/cmis/ws/200908/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://docs.oasis-open.org/ns/cmis/ws/200908/"
+	xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" name="CMISWebServices">
+	<types>
+		<xsd:schema elementFormDefault="qualified"
+			targetNamespace="http://docs.oasis-open.org/ns/cmis/ws/200908/">
+			<xsd:import schemaLocation="CMIS-Core.xsd"
+				namespace="http://docs.oasis-open.org/ns/cmis/core/200908/" />
+			<xsd:import schemaLocation="CMIS-Messaging.xsd"
+				namespace="http://docs.oasis-open.org/ns/cmis/messaging/200908/" />
+		</xsd:schema>
+	</types>
+
+	<message name="cmisException">
+		<part name="fault" element="cmism:cmisFault" />
+	</message>
+
+	<message name="getACLRequest">
+		<part name="parameters" element="cmism:getACL" />
+	</message>
+	<message name="getACLResponse">
+		<part name="parameters" element="cmism:getACLResponse" />
+	</message>
+
+	<message name="applyACLRequest">
+		<part name="parameters" element="cmism:applyACL" />
+	</message>
+	<message name="applyACLResponse">
+		<part name="parameters" element="cmism:applyACLResponse" />
+	</message>
+
+	<message name="queryRequest">
+		<part name="parameters" element="cmism:query" />
+	</message>
+	<message name="queryResponse">
+		<part name="parameters" element="cmism:queryResponse" />
+	</message>
+	<message name="getContentChangesRequest">
+		<part name="parameters" element="cmism:getContentChanges" />
+	</message>
+	<message name="getContentChangesResponse">
+		<part name="parameters" element="cmism:getContentChangesResponse" />
+	</message>
+
+	<message name="addObjectToFolderRequest">
+		<part name="parameters" element="cmism:addObjectToFolder" />
+	</message>
+	<message name="addObjectToFolderResponse">
+		<part name="parameters" element="cmism:addObjectToFolderResponse" />
+	</message>
+	<message name="removeObjectFromFolderRequest">
+		<part name="parameters" element="cmism:removeObjectFromFolder" />
+	</message>
+	<message name="removeObjectFromFolderResponse">
+		<part name="parameters" element="cmism:removeObjectFromFolderResponse" />
+	</message>
+
+	<message name="getDescendantsRequest">
+		<part name="parameters" element="cmism:getDescendants" />
+	</message>
+	<message name="getDescendantsResponse">
+		<part name="parameters" element="cmism:getDescendantsResponse" />
+	</message>
+	<message name="getChildrenRequest">
+		<part name="parameters" element="cmism:getChildren" />
+	</message>
+	<message name="getChildrenResponse">
+		<part name="parameters" element="cmism:getChildrenResponse" />
+	</message>
+	<message name="getFolderParentRequest">
+		<part name="parameters" element="cmism:getFolderParent" />
+	</message>
+	<message name="getFolderParentResponse">
+		<part name="parameters" element="cmism:getFolderParentResponse" />
+	</message>
+	<message name="getObjectParentsRequest">
+		<part name="parameters" element="cmism:getObjectParents" />
+	</message>
+	<message name="getObjectParentsResponse">
+		<part name="parameters" element="cmism:getObjectParentsResponse" />
+	</message>
+	<message name="getRenditionsRequest">
+		<part name="parameters" element="cmism:getRenditions" />
+	</message>
+	<message name="getRenditionsResponse">
+		<part name="parameters" element="cmism:getRenditionsResponse" />
+	</message>
+	<message name="getCheckedOutDocsRequest">
+		<part name="parameters" element="cmism:getCheckedOutDocs" />
+	</message>
+	<message name="getCheckedOutDocsResponse">
+		<part name="parameters" element="cmism:getCheckedOutDocsResponse" />
+	</message>
+
+	<message name="createDocumentRequest">
+		<part name="parameters" element="cmism:createDocument" />
+	</message>
+	<message name="createDocumentResponse">
+		<part name="parameters" element="cmism:createDocumentResponse" />
+	</message>
+	<message name="createDocumentFromSourceRequest">
+		<part name="parameters" element="cmism:createDocumentFromSource" />
+	</message>
+	<message name="createDocumentFromSourceResponse">
+		<part name="parameters" element="cmism:createDocumentFromSourceResponse" />
+	</message>
+	<message name="createFolderRequest">
+		<part name="parameters" element="cmism:createFolder" />
+	</message>
+	<message name="createFolderResponse">
+		<part name="parameters" element="cmism:createFolderResponse" />
+	</message>
+	<message name="createRelationshipRequest">
+		<part name="parameters" element="cmism:createRelationship" />
+	</message>
+	<message name="createRelationshipResponse">
+		<part name="parameters" element="cmism:createRelationshipResponse" />
+	</message>
+	<message name="createPolicyRequest">
+		<part name="parameters" element="cmism:createPolicy" />
+	</message>
+	<message name="createPolicyResponse">
+		<part name="parameters" element="cmism:createPolicyResponse" />
+	</message>
+	<message name="getAllowableActionsRequest">
+		<part name="parameters" element="cmism:getAllowableActions" />
+	</message>
+	<message name="getAllowableActionsResponse">
+		<part name="parameters" element="cmism:getAllowableActionsResponse" />
+	</message>
+	<message name="getObjectRequest">
+		<part name="parameters" element="cmism:getObject" />
+	</message>
+	<message name="getObjectResponse">
+		<part name="parameters" element="cmism:getObjectResponse" />
+	</message>
+	<message name="getPropertiesRequest">
+		<part name="parameters" element="cmism:getProperties" />
+	</message>
+	<message name="getPropertiesResponse">
+		<part name="parameters" element="cmism:getPropertiesResponse" />
+	</message>
+
+	<message name="getObjectByPathRequest">
+		<part name="parameters" element="cmism:getObjectByPath" />
+	</message>
+	<message name="getObjectByPathResponse">
+		<part name="parameters" element="cmism:getObjectByPathResponse" />
+	</message>
+
+	<message name="getContentStreamRequest">
+		<part name="parameters" element="cmism:getContentStream" />
+	</message>
+	<message name="getContentStreamResponse">
+		<part name="parameters" element="cmism:getContentStreamResponse" />
+	</message>
+	<message name="updatePropertiesRequest">
+		<part name="parameters" element="cmism:updateProperties" />
+	</message>
+	<message name="updatePropertiesResponse">
+		<part name="parameters" element="cmism:updatePropertiesResponse" />
+	</message>
+	<message name="moveObjectRequest">
+		<part name="parameters" element="cmism:moveObject" />
+	</message>
+	<message name="moveObjectResponse">
+		<part name="parameters" element="cmism:moveObjectResponse" />
+	</message>
+	<message name="deleteObjectRequest">
+		<part name="parameters" element="cmism:deleteObject" />
+	</message>
+	<message name="deleteObjectResponse">
+		<part name="parameters" element="cmism:deleteObjectResponse" />
+	</message>
+	<message name="deleteTreeRequest">
+		<part name="parameters" element="cmism:deleteTree" />
+	</message>
+	<message name="deleteTreeResponse">
+		<part name="parameters" element="cmism:deleteTreeResponse" />
+	</message>
+	<message name="setContentStreamRequest">
+		<part name="parameters" element="cmism:setContentStream" />
+	</message>
+	<message name="setContentStreamResponse">
+		<part name="parameters" element="cmism:setContentStreamResponse" />
+	</message>
+	<message name="deleteContentStreamRequest">
+		<part name="parameters" element="cmism:deleteContentStream" />
+	</message>
+	<message name="deleteContentStreamResponse">
+		<part name="parameters" element="cmism:deleteContentStreamResponse" />
+	</message>
+
+	<message name="applyPolicyRequest">
+		<part name="parameters" element="cmism:applyPolicy" />
+	</message>
+	<message name="applyPolicyResponse">
+		<part name="parameters" element="cmism:applyPolicyResponse" />
+	</message>
+	<message name="removePolicyRequest">
+		<part name="parameters" element="cmism:removePolicy" />
+	</message>
+	<message name="removePolicyResponse">
+		<part name="parameters" element="cmism:removePolicyResponse" />
+	</message>
+	<message name="getAppliedPoliciesRequest">
+		<part name="parameters" element="cmism:getAppliedPolicies" />
+	</message>
+	<message name="getAppliedPoliciesResponse">
+		<part name="parameters" element="cmism:getAppliedPoliciesResponse" />
+	</message>
+
+	<message name="getObjectRelationshipsRequest">
+		<part name="parameters" element="cmism:getObjectRelationships" />
+	</message>
+	<message name="getObjectRelationshipsResponse">
+		<part name="parameters" element="cmism:getObjectRelationshipsResponse" />
+	</message>
+
+	<message name="getRepositoriesRequest">
+		<part name="parameters" element="cmism:getRepositories" />
+	</message>
+	<message name="getRepositoriesResponse">
+		<part name="parameters" element="cmism:getRepositoriesResponse" />
+	</message>
+	<message name="getRepositoryInfoRequest">
+		<part name="parameters" element="cmism:getRepositoryInfo" />
+	</message>
+	<message name="getRepositoryInfoResponse">
+		<part name="parameters" element="cmism:getRepositoryInfoResponse" />
+	</message>
+	<message name="getTypeChildrenRequest">
+		<part name="parameters" element="cmism:getTypeChildren" />
+	</message>
+	<message name="getTypeChildrenResponse">
+		<part name="parameters" element="cmism:getTypeChildrenResponse" />
+	</message>
+	<message name="getTypeDescendantsRequest">
+		<part name="parameters" element="cmism:getTypeDescendants" />
+	</message>
+	<message name="getTypeDescendantsResponse">
+		<part name="parameters" element="cmism:getTypeDescendantsResponse" />
+	</message>
+	<message name="getTypeDefinitionRequest">
+		<part name="parameters" element="cmism:getTypeDefinition" />
+	</message>
+	<message name="getTypeDefinitionResponse">
+		<part name="parameters" element="cmism:getTypeDefinitionResponse" />
+	</message>
+
+	<message name="checkOutRequest">
+		<part name="parameters" element="cmism:checkOut" />
+	</message>
+	<message name="checkOutResponse">
+		<part name="parameters" element="cmism:checkOutResponse" />
+	</message>
+	<message name="cancelCheckOutRequest">
+		<part name="parameters" element="cmism:cancelCheckOut" />
+	</message>
+	<message name="cancelCheckOutResponse">
+		<part name="parameters" element="cmism:cancelCheckOutResponse" />
+	</message>
+	<message name="checkInRequest">
+		<part name="parameters" element="cmism:checkIn" />
+	</message>
+	<message name="checkInResponse">
+		<part name="parameters" element="cmism:checkInResponse" />
+	</message>
+	<message name="getObjectOfLatestVersionRequest">
+		<part name="parameters" element="cmism:getObjectOfLatestVersion" />
+	</message>
+	<message name="getObjectOfLatestVersionResponse">
+		<part name="parameters" element="cmism:getObjectOfLatestVersionResponse" />
+	</message>	
+	<message name="getPropertiesOfLatestVersionRequest">
+		<part name="parameters" element="cmism:getPropertiesOfLatestVersion" />
+	</message>
+	<message name="getPropertiesOfLatestVersionResponse">
+		<part name="parameters" element="cmism:getPropertiesOfLatestVersionResponse" />
+	</message>
+	<message name="getAllVersionsRequest">
+		<part name="parameters" element="cmism:getAllVersions" />
+	</message>
+	<message name="getAllVersionsResponse">
+		<part name="parameters" element="cmism:getAllVersionsResponse" />
+	</message>
+
+	<message name="getFolderTreeRequest">
+		<part name="parameters" element="cmism:getFolderTree" />
+	</message>
+	<message name="getFolderTreeResponse">
+		<part name="parameters" element="cmism:getFolderTreeResponse" />
+	</message>
+
+	<portType name="DiscoveryServicePort">
+		<operation name="query">
+			<input message="cmisw:queryRequest" />
+			<output message="cmisw:queryResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getContentChanges">
+			<input message="cmisw:getContentChangesRequest" />
+			<output message="cmisw:getContentChangesResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+
+	<portType name="MultiFilingServicePort">
+		<operation name="addObjectToFolder">
+			<input message="cmisw:addObjectToFolderRequest" />
+			<output message="cmisw:addObjectToFolderResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="removeObjectFromFolder">
+			<input message="cmisw:removeObjectFromFolderRequest" />
+			<output message="cmisw:removeObjectFromFolderResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+	<portType name="NavigationServicePort">
+		<operation name="getDescendants">
+			<input message="cmisw:getDescendantsRequest" />
+			<output message="cmisw:getDescendantsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getChildren">
+			<input message="cmisw:getChildrenRequest" />
+			<output message="cmisw:getChildrenResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getFolderParent">
+			<input message="cmisw:getFolderParentRequest" />
+			<output message="cmisw:getFolderParentResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getFolderTree">
+			<input message="cmisw:getFolderTreeRequest" />
+			<output message="cmisw:getFolderTreeResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getObjectParents">
+			<input message="cmisw:getObjectParentsRequest" />
+			<output message="cmisw:getObjectParentsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getCheckedOutDocs">
+			<input message="cmisw:getCheckedOutDocsRequest" />
+			<output message="cmisw:getCheckedOutDocsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+	<portType name="ObjectServicePort">
+		<operation name="createDocument">
+			<input message="cmisw:createDocumentRequest" />
+			<output message="cmisw:createDocumentResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="createDocumentFromSource">
+			<input message="cmisw:createDocumentFromSourceRequest" />
+			<output message="cmisw:createDocumentFromSourceResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="createFolder">
+			<input message="cmisw:createFolderRequest" />
+			<output message="cmisw:createFolderResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="createRelationship">
+			<input message="cmisw:createRelationshipRequest" />
+			<output message="cmisw:createRelationshipResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="createPolicy">
+			<input message="cmisw:createPolicyRequest" />
+			<output message="cmisw:createPolicyResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getAllowableActions">
+			<input message="cmisw:getAllowableActionsRequest" />
+			<output message="cmisw:getAllowableActionsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getObject">
+			<input message="cmisw:getObjectRequest" />
+			<output message="cmisw:getObjectResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getProperties">
+			<input message="cmisw:getPropertiesRequest" />
+			<output message="cmisw:getPropertiesResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getRenditions">
+			<input message="cmisw:getRenditionsRequest" />
+			<output message="cmisw:getRenditionsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getObjectByPath">
+			<input message="cmisw:getObjectByPathRequest" />
+			<output message="cmisw:getObjectByPathResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getContentStream">
+			<input message="cmisw:getContentStreamRequest" />
+			<output message="cmisw:getContentStreamResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="updateProperties">
+			<input message="cmisw:updatePropertiesRequest" />
+			<output message="cmisw:updatePropertiesResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="moveObject">
+			<input message="cmisw:moveObjectRequest" />
+			<output message="cmisw:moveObjectResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="deleteObject">
+			<input message="cmisw:deleteObjectRequest" />
+			<output message="cmisw:deleteObjectResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="deleteTree">
+			<input message="cmisw:deleteTreeRequest" />
+			<output message="cmisw:deleteTreeResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="setContentStream">
+			<input message="cmisw:setContentStreamRequest" />
+			<output message="cmisw:setContentStreamResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="deleteContentStream">
+			<input message="cmisw:deleteContentStreamRequest" />
+			<output message="cmisw:deleteContentStreamResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+	<portType name="PolicyServicePort">
+		<operation name="applyPolicy">
+			<input message="cmisw:applyPolicyRequest" />
+			<output message="cmisw:applyPolicyResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="removePolicy">
+			<input message="cmisw:removePolicyRequest" />
+			<output message="cmisw:removePolicyResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getAppliedPolicies">
+			<input message="cmisw:getAppliedPoliciesRequest" />
+			<output message="cmisw:getAppliedPoliciesResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+
+	<portType name="RelationshipServicePort">
+		<operation name="getObjectRelationships">
+			<input message="cmisw:getObjectRelationshipsRequest" />
+			<output message="cmisw:getObjectRelationshipsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+	<portType name="RepositoryServicePort">
+		<operation name="getRepositories">
+			<input message="cmisw:getRepositoriesRequest" />
+			<output message="cmisw:getRepositoriesResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getRepositoryInfo">
+			<input message="cmisw:getRepositoryInfoRequest" />
+			<output message="cmisw:getRepositoryInfoResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getTypeChildren">
+			<input message="cmisw:getTypeChildrenRequest" />
+			<output message="cmisw:getTypeChildrenResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getTypeDescendants">
+			<input message="cmisw:getTypeDescendantsRequest" />
+			<output message="cmisw:getTypeDescendantsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getTypeDefinition">
+			<input message="cmisw:getTypeDefinitionRequest" />
+			<output message="cmisw:getTypeDefinitionResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+	<portType name="VersioningServicePort">
+		<operation name="checkOut">
+			<input message="cmisw:checkOutRequest" />
+			<output message="cmisw:checkOutResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="cancelCheckOut">
+			<input message="cmisw:cancelCheckOutRequest" />
+			<output message="cmisw:cancelCheckOutResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="checkIn">
+			<input message="cmisw:checkInRequest" />
+			<output message="cmisw:checkInResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getObjectOfLatestVersion">
+			<input message="cmisw:getObjectOfLatestVersionRequest" />
+			<output message="cmisw:getObjectOfLatestVersionResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getPropertiesOfLatestVersion">
+			<input message="cmisw:getPropertiesOfLatestVersionRequest" />
+			<output message="cmisw:getPropertiesOfLatestVersionResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="getAllVersions">
+			<input message="cmisw:getAllVersionsRequest" />
+			<output message="cmisw:getAllVersionsResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+	<portType name="ACLServicePort">
+		<operation name="getACL">
+			<input message="cmisw:getACLRequest" />
+			<output message="cmisw:getACLResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+		<operation name="applyACL">
+			<input message="cmisw:applyACLRequest" />
+			<output message="cmisw:applyACLResponse" />
+			<fault message="cmisw:cmisException" name="cmisException" />
+		</operation>
+	</portType>
+
+
+	<binding name="DiscoveryServicePortBinding" type="cmisw:DiscoveryServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="query">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getContentChanges">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="MultiFilingServicePortBinding" type="cmisw:MultiFilingServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="addObjectToFolder">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="removeObjectFromFolder">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="NavigationServicePortBinding" type="cmisw:NavigationServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="getDescendants">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getChildren">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getFolderParent">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getFolderTree">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getObjectParents">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getCheckedOutDocs">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="ObjectServicePortBinding" type="cmisw:ObjectServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="createDocument">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="createDocumentFromSource">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="createFolder">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="createRelationship">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="createPolicy">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getAllowableActions">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getObject">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getProperties">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getRenditions">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getObjectByPath">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getContentStream">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="updateProperties">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="moveObject">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="deleteObject">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="deleteTree">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="setContentStream">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="deleteContentStream">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="PolicyServicePortBinding" type="cmisw:PolicyServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="applyPolicy">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="removePolicy">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getAppliedPolicies">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="RelationshipServicePortBinding" type="cmisw:RelationshipServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="getObjectRelationships">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="RepositoryServicePortBinding" type="cmisw:RepositoryServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="getRepositories">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getRepositoryInfo">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getTypeChildren">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getTypeDescendants">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getTypeDefinition">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="VersioningServicePortBinding" type="cmisw:VersioningServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="checkOut">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="cancelCheckOut">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="checkIn">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getObjectOfLatestVersion">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getPropertiesOfLatestVersion">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="getAllVersions">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+	<binding name="ACLServicePortBinding" type="cmisw:ACLServicePort">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<operation name="getACL">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+		<operation name="applyACL">
+			<soap:operation soapAction="" />
+			<input>
+				<soap:body use="literal" />
+			</input>
+			<output>
+				<soap:body use="literal" />
+			</output>
+			<fault name="cmisException">
+				<soap:fault name="cmisException" use="literal" />
+			</fault>
+		</operation>
+	</binding>
+
+
+	<service name="DiscoveryService">
+		<port name="DiscoveryServicePort" binding="cmisw:DiscoveryServicePortBinding">
+			<soap:address
+				location="http://cmis/services/DiscoveryService.DiscoveryServicePort" />
+		</port>
+	</service>
+	<service name="MultiFilingService">
+		<port name="MultiFilingServicePort" binding="cmisw:MultiFilingServicePortBinding">
+			<soap:address
+				location="http://cmis/services/MultiFilingService.MultiFilingServicePort" />
+		</port>
+	</service>
+	<service name="NavigationService">
+		<port name="NavigationServicePort" binding="cmisw:NavigationServicePortBinding">
+			<soap:address
+				location="http://cmis/services/NavigationService.NavigationServicePort" />
+		</port>
+	</service>
+	<service name="ObjectService">
+		<port name="ObjectServicePort" binding="cmisw:ObjectServicePortBinding">
+			<soap:address location="http://cmis/services/ObjectService.ObjectServicePort" />
+		</port>
+	</service>
+	<service name="PolicyService">
+		<port name="PolicyServicePort" binding="cmisw:PolicyServicePortBinding">
+			<soap:address location="http://cmis/services/PolicyService.PolicyServicePort" />
+		</port>
+	</service>
+	<service name="RelationshipService">
+		<port name="RelationshipServicePort" binding="cmisw:RelationshipServicePortBinding">
+			<soap:address
+				location="http://cmis/services/RelationshipService.RelationshipServicePort" />
+		</port>
+	</service>
+	<service name="RepositoryService">
+		<port name="RepositoryServicePort" binding="cmisw:RepositoryServicePortBinding">
+			<soap:address
+				location="http://cmis/services/RepositoryService.RepositoryServicePort" />
+		</port>
+	</service>
+	<service name="VersioningService">
+		<port name="VersioningServicePort" binding="cmisw:VersioningServicePortBinding">
+			<soap:address
+				location="http://cmis/services/VersioningService.VersioningServicePort" />
+		</port>
+	</service>
+	<service name="ACLService">
+		<port name="ACLServicePort" binding="cmisw:ACLServicePortBinding">
+			<soap:address location="http://cmis/services/ACLService.ACLServicePort" />
+		</port>
+	</service>
+
+</definitions>
\ No newline at end of file
diff --git a/DotCMIS/wsdl/xml.xsd b/DotCMIS/wsdl/xml.xsd
new file mode 100644
index 0000000..052806b
--- /dev/null
+++ b/DotCMIS/wsdl/xml.xsd
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless
+    required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations under the License.
+-->
+<xsd:schema 
+targetNamespace="http://www.w3.org/XML/1998/namespace" 
+xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+xml:lang="en">
+ <xsd:attribute name="lang">
+  <xsd:simpleType>
+   <xsd:union memberTypes="xsd:language">
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:string">
+      <xsd:enumeration value=""/>
+     </xsd:restriction>
+    </xsd:simpleType>
+   </xsd:union>
+  </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attribute name="space">
+  <xsd:simpleType>
+   <xsd:restriction base="xsd:NCName">
+    <xsd:enumeration value="default"/>
+    <xsd:enumeration value="preserve"/>
+   </xsd:restriction>
+  </xsd:simpleType>
+ </xsd:attribute>
+
+ <xsd:attribute name="base" type="xsd:anyURI">
+  <xsd:annotation>
+   <xsd:documentation>See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute.</xsd:documentation>
+  </xsd:annotation>
+ </xsd:attribute>
+ 
+ <xsd:attribute name="id" type="xsd:ID">
+  <xsd:annotation>
+   <xsd:documentation>See http://www.w3.org/TR/xml-id/ for
+                     information about this attribute.</xsd:documentation>
+  </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attributeGroup name="specialAttrs">
+  <xsd:attribute ref="xml:base"/>
+  <xsd:attribute ref="xml:lang"/>
+  <xsd:attribute ref="xml:space"/>
+  <xsd:attribute ref="xml:id"/>
+ </xsd:attributeGroup>
+
+</xsd:schema>
\ No newline at end of file
diff --git a/DotCMISUnitTest/CRUDTest.cs b/DotCMISUnitTest/CRUDTest.cs
new file mode 100644
index 0000000..aadc941
--- /dev/null
+++ b/DotCMISUnitTest/CRUDTest.cs
@@ -0,0 +1,75 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using DotCMIS.Data;

+using DotCMIS.Enums;

+using NUnit.Framework;

+

+namespace DotCMISUnitTest

+{

+    [TestFixture]

+    public class CRUDTest : TestFramework

+    {

+        [Test]

+        public void TestRepositoryInfo()

+        {

+            Assert.NotNull(RepositoryInfo.Id);

+            Assert.NotNull(RepositoryInfo.Name);

+            Assert.NotNull(RepositoryInfo.RootFolderId);

+        }

+

+        [Test]

+        public void TestRootFolder()

+        {

+            IObjectData rootFolder = GetFullObject(RepositoryInfo.RootFolderId);

+            Assert.AreEqual(BaseTypeId.CmisFolder, rootFolder.BaseTypeId);

+

+            IObjectData rootFolder2 = Binding.GetObjectService().GetObjectByPath(RepositoryInfo.Id, "/", null, true, IncludeRelationships.Both, null, true, true, null);

+            Assert.AreEqual(BaseTypeId.CmisFolder, rootFolder2.BaseTypeId);

+

+            Assert.AreEqual(rootFolder.Id, rootFolder2.Id);

+        }

+

+        [Test]

+        public void TestCreateDocument()

+        {

+               string content1 = "my content";

+

+            IObjectData doc = CreateDocument(RepositoryInfo.RootFolderId, "dottest", content1);

+

+            string content2 = GetTextContent(doc.Id);

+            Assert.AreEqual(content1, content2);

+

+            DeleteObject(doc.Id);

+        }

+

+        [Test]

+        public void TestCreateFolder()

+        {

+            IObjectData folder0 = CreateFolder(RepositoryInfo.RootFolderId, "folder0");

+            IObjectData folder1 = CreateFolder(folder0.Id, "folder1");

+            IObjectData folder2 = CreateFolder(folder1.Id, "folder2");

+            IObjectData folder3 = CreateFolder(folder2.Id, "folder3");

+

+            DeleteObject(folder3.Id);

+            DeleteObject(folder2.Id);

+            DeleteObject(folder1.Id);

+            DeleteObject(folder0.Id);

+        }

+    }

+}

diff --git a/DotCMISUnitTest/DotCMISUnitTest.csproj b/DotCMISUnitTest/DotCMISUnitTest.csproj
new file mode 100644
index 0000000..10d10cc
--- /dev/null
+++ b/DotCMISUnitTest/DotCMISUnitTest.csproj
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <PropertyGroup>

+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

+    <ProductVersion>8.0.30703</ProductVersion>

+    <SchemaVersion>2.0</SchemaVersion>

+    <ProjectGuid>{B4343D5F-BA78-4925-99C5-A0FFD80F862C}</ProjectGuid>

+    <OutputType>Library</OutputType>

+    <AppDesignerFolder>Properties</AppDesignerFolder>

+    <RootNamespace>DotCMISUnitTest</RootNamespace>

+    <AssemblyName>DotCMISUnitTest</AssemblyName>

+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

+    <FileAlignment>512</FileAlignment>

+  </PropertyGroup>

+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

+    <DebugSymbols>true</DebugSymbols>

+    <DebugType>full</DebugType>

+    <Optimize>false</Optimize>

+    <OutputPath>bin\Debug\</OutputPath>

+    <DefineConstants>DEBUG;TRACE</DefineConstants>

+    <ErrorReport>prompt</ErrorReport>

+    <WarningLevel>4</WarningLevel>

+  </PropertyGroup>

+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

+    <DebugType>pdbonly</DebugType>

+    <Optimize>true</Optimize>

+    <OutputPath>bin\Release\</OutputPath>

+    <DefineConstants>TRACE</DefineConstants>

+    <ErrorReport>prompt</ErrorReport>

+    <WarningLevel>4</WarningLevel>

+  </PropertyGroup>

+  <ItemGroup>

+    <Reference Include="nunit.framework, Version=2.5.9.10348, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">

+      <SpecificVersion>False</SpecificVersion>

+      <HintPath>..\..\..\..\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\framework\nunit.framework.dll</HintPath>

+    </Reference>

+    <Reference Include="System" />

+    <Reference Include="System.Core" />

+    <Reference Include="System.Xml.Linq" />

+    <Reference Include="System.Data.DataSetExtensions" />

+    <Reference Include="System.Data" />

+    <Reference Include="System.Xml" />

+  </ItemGroup>

+  <ItemGroup>

+    <Compile Include="CRUDTest.cs" />

+    <Compile Include="Properties\AssemblyInfo.cs" />

+    <Compile Include="TestFramework.cs" />

+    <Compile Include="TypeTest.cs" />

+  </ItemGroup>

+  <ItemGroup>

+    <ProjectReference Include="..\DotCMIS\DotCMIS.csproj">

+      <Project>{529EF90F-A34C-4426-A4F9-65113AC23841}</Project>

+      <Name>DotCMIS</Name>

+    </ProjectReference>

+  </ItemGroup>

+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+       Other similar extension points exist, see Microsoft.Common.targets.

+  <Target Name="BeforeBuild">

+  </Target>

+  <Target Name="AfterBuild">

+  </Target>

+  -->

+</Project>
\ No newline at end of file
diff --git a/DotCMISUnitTest/DotCMISUnitTest.csproj.user b/DotCMISUnitTest/DotCMISUnitTest.csproj.user
new file mode 100644
index 0000000..c7b83a2
--- /dev/null
+++ b/DotCMISUnitTest/DotCMISUnitTest.csproj.user
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">

+    <StartAction>Program</StartAction>

+    <StartProgram>C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\nunit-console.exe</StartProgram>

+    <StartArguments>C:\projects\opencmis\DotCMIS\DotCMISUnitTest\bin\Debug\DotCMISUnitTest.dll</StartArguments>

+    <StartWorkingDirectory>C:\projects\opencmis\DotCMIS\DotCMISUnitTest\bin\Debug</StartWorkingDirectory>

+  </PropertyGroup>

+</Project>
\ No newline at end of file
diff --git a/DotCMISUnitTest/Properties/AssemblyInfo.cs b/DotCMISUnitTest/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0750e0b
--- /dev/null
+++ b/DotCMISUnitTest/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;

+using System.Runtime.CompilerServices;

+using System.Runtime.InteropServices;

+

+// General Information about an assembly is controlled through the following 

+// set of attributes. Change these attribute values to modify the information

+// associated with an assembly.

+[assembly: AssemblyTitle("DotCMIS Unit Tests")]

+[assembly: AssemblyDescription("")]

+[assembly: AssemblyConfiguration("")]

+[assembly: AssemblyCompany("Apache Software Foundation")]

+[assembly: AssemblyProduct("DotCMISUnitTest")]

+[assembly: AssemblyCopyright("")]

+[assembly: AssemblyTrademark("")]

+[assembly: AssemblyCulture("")]

+

+// Setting ComVisible to false makes the types in this assembly not visible 

+// to COM components.  If you need to access a type in this assembly from 

+// COM, set the ComVisible attribute to true on that type.

+[assembly: ComVisible(false)]

+

+// The following GUID is for the ID of the typelib if this project is exposed to COM

+[assembly: Guid("c4626bba-8086-4ad5-8116-2768c623ed6c")]

+

+// Version information for an assembly consists of the following four values:

+//

+//      Major Version

+//      Minor Version 

+//      Build Number

+//      Revision

+//

+// You can specify all the values or you can default the Build and Revision Numbers 

+// by using the '*' as shown below:

+// [assembly: AssemblyVersion("1.0.*")]

+[assembly: AssemblyVersion("0.1.0.0")]

+[assembly: AssemblyFileVersion("1.0.0.0")]

diff --git a/DotCMISUnitTest/TestFramework.cs b/DotCMISUnitTest/TestFramework.cs
new file mode 100644
index 0000000..e13293b
--- /dev/null
+++ b/DotCMISUnitTest/TestFramework.cs
@@ -0,0 +1,315 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System.Collections.Generic;

+using System.Net;

+using DotCMIS;

+using DotCMIS.Binding;

+using NUnit.Framework;

+using DotCMIS.Data;

+using DotCMIS.Enums;

+using DotCMIS.Exceptions;

+using System.Text;

+using System.IO;

+

+namespace DotCMISUnitTest

+{

+    public class TestFramework

+    {

+        private IRepositoryInfo repositoryInfo;

+

+        public ICmisBinding Binding { get; set; }

+        public IRepositoryInfo RepositoryInfo

+        {

+            get

+            {

+                if (repositoryInfo == null)

+                {

+                    repositoryInfo = Binding.GetRepositoryService().GetRepositoryInfos(null)[0];

+                    Assert.NotNull(repositoryInfo);

+                }

+

+                return repositoryInfo;

+            }

+        }

+

+        public string DefaultDocumentType { get; set; }

+        public string DefaultFolderType { get; set; }

+

+        [SetUp]

+        public void Init()

+        {

+            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

+

+            DefaultDocumentType = "cmis:document";

+            DefaultFolderType = "cmis:folder";

+

+            Binding = ConnectAtomPub();

+        }

+

+        public ICmisBinding ConnectAtomPub()

+        {

+            Dictionary<string, string> parametersAtom = new Dictionary<string, string>();

+

+            string baseUrlAtom = "http://localhost:8080/alfresco/opencmis-atom";

+

+            parametersAtom[SessionParameter.AtomPubUrl] = baseUrlAtom;

+            parametersAtom[SessionParameter.User] = "admin";

+            parametersAtom[SessionParameter.Password] = "admin";

+

+            CmisBindingFactory factory = CmisBindingFactory.NewInstance();

+            ICmisBinding binding = factory.CreateCmisAtomPubBinding(parametersAtom);

+

+            Assert.NotNull(binding);

+

+            return binding;

+        }

+

+        public ICmisBinding ConnectWebServices()

+        {

+            Dictionary<string, string> parametersWS = new Dictionary<string, string>();

+

+            string baseUrlWS = "https://localhost:8443/alfresco/opencmis-ws";

+

+            parametersWS[SessionParameter.WebServicesRepositoryService] = baseUrlWS + "/RepositoryService?wsdl";

+            parametersWS[SessionParameter.WebServicesAclService] = baseUrlWS + "/AclService?wsdl";

+            parametersWS[SessionParameter.WebServicesDiscoveryService] = baseUrlWS + "/DiscoveryService?wsdl";

+            parametersWS[SessionParameter.WebServicesMultifilingService] = baseUrlWS + "/MultifilingService?wsdl";

+            parametersWS[SessionParameter.WebServicesNavigationService] = baseUrlWS + "/NavigationService?wsdl";

+            parametersWS[SessionParameter.WebServicesObjectService] = baseUrlWS + "/ObjectService?wsdl";

+            parametersWS[SessionParameter.WebServicesPolicyService] = baseUrlWS + "/PolicyService?wsdl";

+            parametersWS[SessionParameter.WebServicesRelationshipService] = baseUrlWS + "/RelationshipService?wsdl";

+            parametersWS[SessionParameter.WebServicesVersioningService] = baseUrlWS + "/VersioningService?wsdl";

+            parametersWS[SessionParameter.User] = "admin";

+            parametersWS[SessionParameter.Password] = "admin";

+

+            CmisBindingFactory factory = CmisBindingFactory.NewInstance();

+            ICmisBinding binding = factory.CreateCmisWebServicesBinding(parametersWS);

+

+            Assert.NotNull(binding);

+

+            return binding;

+        }

+

+        public IObjectData GetFullObject(string objectId)

+        {

+            IObjectData result = Binding.GetObjectService().GetObject(RepositoryInfo.Id, objectId, "*", true, IncludeRelationships.Both, "*", true, true, null);

+

+            Assert.NotNull(result);

+            Assert.NotNull(result.Id);

+            Assert.NotNull(result.BaseTypeId);

+            Assert.NotNull(result.Properties);

+

+            return result;

+        }

+

+        public IObjectData CreateDocument(string folderId, string name, string content)

+        {

+            Properties properties = new Properties();

+

+            PropertyId objectTypeIdProperty = new PropertyId();

+            objectTypeIdProperty.Id = PropertyIds.ObjectTypeId;

+            objectTypeIdProperty.Values = new List<string>();

+            objectTypeIdProperty.Values.Add(DefaultDocumentType);

+            properties.AddProperty(objectTypeIdProperty);

+

+            PropertyString nameProperty = new PropertyString();

+            nameProperty.Id = PropertyIds.Name;

+            nameProperty.Values = new List<string>();

+            nameProperty.Values.Add(name);

+            properties.AddProperty(nameProperty);

+

+            ContentStream contentStream = null;

+            if (content != null)

+            {

+                byte[] bytes = Encoding.UTF8.GetBytes(content);

+

+                contentStream = new ContentStream();

+                contentStream.FileName = name;

+                contentStream.MimeType = "text/plain";

+                contentStream.Stream = new MemoryStream(bytes);

+                contentStream.Length = bytes.Length;

+            }

+

+            string newDocId = Binding.GetObjectService().CreateDocument(RepositoryInfo.Id, properties, folderId, contentStream, null, null, null, null, null);

+

+            Assert.NotNull(newDocId);

+

+            IObjectData doc = GetFullObject(newDocId);

+

+            Assert.NotNull(doc);

+            Assert.NotNull(doc.Id);

+            Assert.AreEqual(BaseTypeId.CmisDocument, doc.BaseTypeId);

+            Assert.NotNull(doc.Properties);

+            Assert.True(doc.Properties[PropertyIds.ObjectTypeId] is PropertyId);

+            Assert.AreEqual(DefaultDocumentType, ((PropertyId)doc.Properties[PropertyIds.ObjectTypeId]).FirstValue);

+            Assert.True(doc.Properties[PropertyIds.Name] is PropertyString);

+            Assert.AreEqual(name, ((PropertyString)doc.Properties[PropertyIds.Name]).FirstValue);

+

+            if (folderId != null)

+            {

+                CheckObjectInFolder(newDocId, folderId);

+            }

+

+            return doc;

+        }

+

+        public IObjectData CreateFolder(string folderId, string name)

+        {

+            Properties properties = new Properties();

+

+            PropertyId objectTypeIdProperty = new PropertyId();

+            objectTypeIdProperty.Id = PropertyIds.ObjectTypeId;

+            objectTypeIdProperty.Values = new List<string>();

+            objectTypeIdProperty.Values.Add(DefaultFolderType);

+            properties.AddProperty(objectTypeIdProperty);

+

+            PropertyString nameProperty = new PropertyString();

+            nameProperty.Id = PropertyIds.Name;

+            nameProperty.Values = new List<string>();

+            nameProperty.Values.Add(name);

+            properties.AddProperty(nameProperty);

+

+            string newFolderId = Binding.GetObjectService().CreateFolder(RepositoryInfo.Id, properties, folderId, null, null, null, null);

+

+            Assert.NotNull(newFolderId);

+

+            IObjectData folder = GetFullObject(newFolderId);

+

+            Assert.NotNull(folder);

+            Assert.NotNull(folder.Id);

+            Assert.AreEqual(BaseTypeId.CmisFolder, folder.BaseTypeId);

+            Assert.NotNull(folder.Properties);

+            Assert.True(folder.Properties[PropertyIds.ObjectTypeId] is PropertyId);

+            Assert.AreEqual(DefaultFolderType, ((PropertyId)folder.Properties[PropertyIds.ObjectTypeId]).FirstValue);

+            Assert.True(folder.Properties[PropertyIds.Name] is PropertyString);

+            Assert.AreEqual(name, ((PropertyString)folder.Properties[PropertyIds.Name]).FirstValue);

+

+            if (folderId != null)

+            {

+                CheckObjectInFolder(newFolderId, folderId);

+            }

+

+            return folder;

+        }

+

+        public void CheckObjectInFolder(string objectId, string folderId)

+        {

+            // check parents

+            IList<IObjectParentData> parents = Binding.GetNavigationService().GetObjectParents(RepositoryInfo.Id, objectId, null, null, null, null, null, null);

+

+            Assert.NotNull(parents);

+            Assert.True(parents.Count > 0);

+

+            bool found = false;

+            foreach (IObjectParentData parent in parents)

+            {

+                Assert.NotNull(parent);

+                Assert.NotNull(parent.Object);

+                Assert.NotNull(parent.Object.Id);

+                if (parent.Object.Id == folderId)

+                {

+                    found = true;

+                }

+            }

+            Assert.True(found);

+

+            // check children

+            found = false;

+            IObjectInFolderList children = Binding.GetNavigationService().GetChildren(RepositoryInfo.Id, folderId, null, null, null, null, null, null, null, null, null);

+

+            Assert.NotNull(children);

+            if (children.NumItems != null)

+            {

+                Assert.True(children.NumItems > 0);

+            }

+

+            foreach (ObjectInFolderData obj in children.Objects)

+            {

+                Assert.NotNull(obj);

+                Assert.NotNull(obj.Object);

+                Assert.NotNull(obj.Object.Id);

+                if (obj.Object.Id == objectId)

+                {

+                    found = true;

+                }

+            }

+            Assert.True(found);

+

+            // check descendants

+            if (RepositoryInfo.Capabilities == null ||

+                RepositoryInfo.Capabilities.IsGetDescendantsSupported == null ||

+                !(bool)RepositoryInfo.Capabilities.IsGetDescendantsSupported)

+            {

+                return;

+            }

+

+            found = false;

+            IList<IObjectInFolderContainer> descendants = Binding.GetNavigationService().GetDescendants(RepositoryInfo.Id, folderId, 1, null, null, null, null, null, null);

+

+            Assert.NotNull(descendants);

+

+            foreach (IObjectInFolderContainer obj in descendants)

+            {

+                Assert.NotNull(obj);

+                Assert.NotNull(obj.Object);

+                Assert.NotNull(obj.Object.Object);

+                Assert.NotNull(obj.Object.Object.Id);

+                if (obj.Object.Object.Id == objectId)

+                {

+                    found = true;

+                }

+            }

+            Assert.True(found);

+        }

+

+        public void DeleteObject(string objectId)

+        {

+            Binding.GetObjectService().DeleteObject(RepositoryInfo.Id, objectId, true, null);

+

+            try

+            {

+                Binding.GetObjectService().GetObject(RepositoryInfo.Id, objectId, null, null, null, null, null, null, null);

+                Assert.Fail("CmisObjectNotFoundException excepted!");

+            }

+            catch (CmisObjectNotFoundException)

+            {

+            }

+        }

+

+        public string GetTextContent(string objectId)

+        {

+            IContentStream contentStream = Binding.GetObjectService().GetContentStream(RepositoryInfo.Id, objectId, null, null, null, null);

+

+            Assert.NotNull(contentStream);

+            Assert.NotNull(contentStream.Stream);

+

+            MemoryStream memStream = new MemoryStream();

+            byte[] buffer = new byte[4096];

+            int b;

+            while ((b = contentStream.Stream.Read(buffer, 0, buffer.Length)) > 0)

+            {

+                memStream.Write(buffer, 0, b);

+            }

+

+            string result = Encoding.UTF8.GetString(memStream.GetBuffer(), 0, (int)memStream.Length);

+

+            return result;

+        }

+    }

+}

diff --git a/DotCMISUnitTest/TypeTest.cs b/DotCMISUnitTest/TypeTest.cs
new file mode 100644
index 0000000..93f1b92
--- /dev/null
+++ b/DotCMISUnitTest/TypeTest.cs
@@ -0,0 +1,113 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one

+ * or more contributor license agreements.  See the NOTICE file

+ * distributed with this work for additional information

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ */

+using System;

+using System.Collections.Generic;

+using System.Linq;

+using System.Text;

+using NUnit.Framework;

+using DotCMIS.Data;

+using DotCMIS.Enums;

+using DotCMIS.Exceptions;

+

+namespace DotCMISUnitTest

+{

+    [TestFixture]

+    public class TypeTest : TestFramework

+    {

+        [Test]

+        public void TestBaseTypes()

+        {

+            ITypeDefinition type;

+

+            // cmis:document

+            type = Binding.GetRepositoryService().GetTypeDefinition(RepositoryInfo.Id, "cmis:document", null);

+

+            Assert.NotNull(type);

+            Assert.AreEqual(BaseTypeId.CmisDocument, type.BaseTypeId);

+            Assert.AreEqual("cmis:document", type.Id);

+

+            // cmis:folder

+            type = Binding.GetRepositoryService().GetTypeDefinition(RepositoryInfo.Id, "cmis:folder", null);

+

+            Assert.NotNull(type);

+            Assert.AreEqual(BaseTypeId.CmisFolder, type.BaseTypeId);

+            Assert.AreEqual("cmis:folder", type.Id);

+

+            // cmis:relationship

+            try

+            {

+                type = Binding.GetRepositoryService().GetTypeDefinition(RepositoryInfo.Id, "cmis:relationship", null);

+

+                Assert.NotNull(type);

+                Assert.AreEqual(BaseTypeId.CmisRelationship, type.BaseTypeId);

+                Assert.AreEqual("cmis:relationship", type.Id);

+            }

+            catch (CmisObjectNotFoundException)

+            {

+                // not supported by the repository

+            }

+

+            // cmis:policy

+            try

+            {

+                type = Binding.GetRepositoryService().GetTypeDefinition(RepositoryInfo.Id, "cmis:policy", null);

+

+                Assert.NotNull(type);

+                Assert.AreEqual(BaseTypeId.CmisPolicy, type.BaseTypeId);

+                Assert.AreEqual("cmis:policy", type.Id);

+            }

+            catch (CmisObjectNotFoundException)

+            {

+                // not supported by the repository

+            }

+        }

+

+        [Test]

+        public void TestTypeChildren()

+        {

+            ITypeDefinitionList typeList = Binding.GetRepositoryService().GetTypeChildren(RepositoryInfo.Id, null, null, null, null, null);

+

+            Assert.NotNull(typeList);

+            Assert.NotNull(typeList.List);

+            Assert.NotNull(typeList.NumItems);

+            Assert.True(typeList.NumItems >= 2);

+            Assert.True(typeList.NumItems <= 4);

+

+            bool foundDocument = false;

+            bool foundFolder = false;

+            foreach (ITypeDefinition type in typeList.List)

+            {

+                Assert.NotNull(type);

+                Assert.NotNull(type.Id);

+

+                if (type.Id == "cmis:document")

+                {

+                    foundDocument = true;

+                }

+                if (type.Id == "cmis:folder")

+                {

+                    foundFolder = true;

+                }

+            }

+

+            Assert.True(foundDocument);

+            Assert.True(foundFolder);

+        }

+    }

+}

diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..75b5248
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+

+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   Licensed under the Apache License, Version 2.0 (the "License");

+   you may not use this file except in compliance with the License.

+   You may obtain a copy of the License at

+

+       http://www.apache.org/licenses/LICENSE-2.0

+

+   Unless required by applicable law or agreed to in writing, software

+   distributed under the License is distributed on an "AS IS" BASIS,

+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+   See the License for the specific language governing permissions and

+   limitations under the License.

diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..fac871a
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,2 @@
+DotCMIS

+Copyright 2009-2011 The Apache Software Foundation
\ No newline at end of file